From a purely neutral standpoint from someone who dislikes IS, it looks like both the US and Iraqi governments needs to man up and stop taking stupid pot shots at each other over the media. The only ones who benefit from such petty behaviour is IS.
As things stand, you have top US officials all but explicitly accusing the Iraqis of incompetence and cowardice, while you have top Iraqi officials blaming the US for insufficient and/or inadequate training, equipment and close air support.
I think both sides have a point.
The conduct of the Iraqi national military has been shamefully poor, at the other end, anyone who has even a passing familiarity with post-war Iraq reconstruction will be aware of the truly epic levels of corruption and graft going on on all sides, western and Iraqi.
You have private military contractors who have a well-established track record of "creative" accounting and claims, and you have Iraqis treating military service as a free meal ticket, often with ghost soldiers who are on the books and who collect their monthly pay, but who doesn't show up for anything else.
Add to the mix all the Al-Q/IS sponsored "green on blue" attacks, and is it any wonder the Iraqi troops' training are not up to scratch, when their instructors either don't turn up, or who turn up more worried about not getting shot in the back by one of their recruits than training them?
Higher up, you have Iraqis treating officer commissions like a commodity and status symbol and buy rather than earn ranks.
On the American side, it looks like the US never really seriously trained or equipped the Iraqi armed forces as a counter-insurgency force, and was rather building it up as a conventional military geared more towards countering Iran.
But enough background.
Analysing events on the ground, I think we need to also take a unbiased prospective and look at things honestly rather than wishing to prove a point.
The terrible conduct of the Iraqi military should not be only blamed on the Iraqis, even though they deserve their share of the blame, but to get a truly accurate assessment, we also need to give credit where it is due to IS.
Say what you will of their beliefs and conduct, their troops fight with determination and bravery, if not skill.
After having another think, I believe all the horrific atrocities they have committed is not mere random evil, but serves a purpose.
The main practical reason for IS to commit the public mass killings are twofold.
Firstly, it bloodies their new recruits. Further radicalising them to be truly fanatical, and also serves to bind those new recruits to IS' cause by effectively making it impossible for them to have second thoughts. With their grinning faces posted all over the internet with their victims, any recruits from foreign countries will never be able to go back to their old lives. IS becomes their only option if they don't want to spend the rest of their lives in jail or facing the needle.
The second goal of committing such atrocities is to conduct psychological warfare on their opponents.
Sure, knowing you will get executed or worse if captured will make you fight to the death if concerned, but it looks like IS is actually fairly careful to leave large Iraqi formations an obvious escape route.
So faced with the ferocity of a typical IS attack, and knowing what would happen if captured, it seems most Iraqi units fold and turn tail at the first sign of an IS attack.
I think this has been exacerbated by the new tactics IS has adopted to counter coalition air strikes by breaking their forces down into small units to infiltrate cities and the link up to attack once they are within an urban area.
So often, Iraqi units find themselves under sudden attack at close quarters, with all the confusion that causes, and if attacked on multiple sides at the same time, the threat of being cut-off and captured would be great, so the Iraqis are extra proven to panic and flee rather than fight.
There are several tactics and strategies that spring to mind to counter these tactics.
Firstly, consider moving the front lines out of the cities and into the open deserts.
Have the Iraqis dig trenches ad/or build barricades out in the middle of nowhere to check IS advances far from built up areas that IS can use to hide in.
Rather than have a single check point on the roads that easily form bottlenecks, build temporary diversions so you split the one road into dozens of branches that each lead to a separate checkpoint, like a toll road entrance/exit, and force IS to fight there.
Also, issue the Iraqis with secure communication gear and their jam the crap out of all other signals in your chosen battlefield.
If IS divide their forces, denying them effective communications will make their forces easier to pick of piecemeal, and prevent them from acting together.