The problem with the US not winning in Iraq is that the US has forgotten how to win. This is due to the "wimpification" of America.
You can not fight a war and be politically correct (or, you can not fight a politiaclly correct war).
You can't avoid storming mosques, for instance if known enemies are in there. What happened to carpet bombing? Carpet bombing was one of the ONLY things that brought the North Vietnamese to the table. You must DENY the enemy ANY safe haven, be it a mosque, wedding, whatever.
In the American civil war, General Sherman's "march to the sea", he absolutely destroyed every living thing in the South that his army could get its' hands on. He killed every soldier, tree, chicken, dog, cat, cow, town, city, etc, etc. to DEMORALIZE the enemy and drive them into submission.
That is how a war is won. In WWII, Dresden and othe Axis cities were FIREBOMBED, killing MILLIONS of civillians (more were killed by firebombing than both nukes put together). Why was this done? To throw the enemy into despair and destroy their will to fight. To make every aspect of the enemies civilian lives miserable.
That's how to win a war.
The US and it's allies, except Isreal, have forgotten how to win. This is largely due to "politically correct" pressures by the media, etc.
Wars are won by total destruction of the enemies' will to fight.