This article in the Guardian, on Obama’s firing of McChrystal in Afghanistan, mentions past firings of military officials by US presidents, including MacArthur in 1951. That case was a pretty close match to this one – a field commander had publicly criticised the political direction of an ongoing war. and after a bit of back-and-forth he eventually got sacked.
It seems a good moment to drag out one of my favourite comments by Truman, his retrospective summary of that situation:
I fired him because he wouldn’t respect the authority of the President. I didn’t fire him because he was a dumb son of a bitch, although he was, but that’s not against the law for generals. If it was, half to three-quarters of them would be in jail.
(Incidentally, the comment at the bottom of the page is interesting – one of Truman’s last acts as President was to destroy embarrassing material in Eisenhower’s personnel file. Would you get that now, you wonder?)