America can't "win" this war because:
1. Bush started a war on loose grounds (why he did it we leave for another day) and the only reason he managed to start it was because people was still shocked from 9/11 and thus he launched a war against Iraq (anyone who read a psychology book knows how people band togeather during war/national crisis). And when people had a chance to reflect about the situation he lost most of his support.
You can't win a war your own countrymen dosn't support.
2. The invasion of Iraq was on one side good, stop the evil reign of Saddam but looking at it from another angle - the only thing in Iraq keeping it stable was Saddam. So when USA invaded and captured Saddam you immediately started a civil war.
This civil war has 3-4 sides Shia, Sunni, Al-Qaeda and the Kurds (Kurds are less involved).
All of these sides want to rule, Shia and Sunni are to quite different "types" of Islam, very simply put, one believes that the regim should be by an ascendant of muhammed and the other one doesn't. Kurds on the other hand are neither, kurds are the worlds largest ethnic group and have been heavily suppressed by the countries they live in (mainly Iran, Iraq, Syria, and Turkey). Thus they are not on too good terms with neither shia or sunni. Al-Qaeda is on the other hand a terrorist group claiming to fight for Islam but don't really follow the religion (breaking many of it's laws).
So, when Bush invaded all of these sides wanted power, America basicaly said: "GET ALONG!" and thats not how it works in reality. Now Iraq has a split regime as well as a split country.