The veto is in response to a section of the bill that could leave the Iraqi government liable for compensation claims from Saddam Hussein's victims.
Opposition Democrats have complained that the president's veto will derail funding for US troops and that concerns should have been raised earlier.
A new version of the bill will now be drawn up and debated early next year.
The bill would have exposed Iraq to "massive liability in lawsuits concerning the misdeeds of the Saddam Hussein regime," said White House spokesman Scott Stanzel.
"The new democratic government of Iraq, during this crucial period of reconstruction, cannot afford to have its funds entangled in such lawsuits in the United States," he said.
Lawyers acting on behalf of Saddam Hussein's victims could have had the Iraqi government's US-based assets frozen pending the outcome of their cases, the White House said.
'Bowing to demands'
Congressional Democrats accused President Bush of giving in to a threat from the Iraqi government to withdraw all of its assets from US banks.
"We understand that the president is bowing to the demands of the Iraqi government, which is threatening to withdraw billions of dollars invested in US banks if this bill is signed," said Democratic House Speaker Nancy Pelosi and Democratic Senate Majority Leader Harry Reid, in a joint statement.
Overall, the bill authorises $696bn (£348bn) in military spending, including $189bn for the wars in Iraq and Afghanistan, for the 2008 financial year.
It also provides funding for troops returning from war and sets out conditions for the acquisition of new missile defence systems.
During the passage of the legislation, congressional Democrats had tried to add a provision to the bill tying defence funding to the withdrawal of US troops from Iraq, but were blocked by Senate Republicans.
Published: 2007/12/28 19:05:10 GMT
© BBC MMVII