Gen McChrystal is on his way from Afghanistan to Washington DC for his mandatory ass chewing related to an article in Rolling Stone magazine. In the article, the General questions the civilian leadership above him and their commitment to success.
Whatever the merits of his complaints, it seems as though we have already forgotten the lessons that were gleaned from the aftermath of Viet Nam. Gen. Maxwell Taylor is still reviled to this day for his willingness to cooperate with the dysfunctional strategy of Lyndon Johnson, rather than to resign in protest. While Taylor may have felt that he was doing the right thing, he ended up enabling the failure.
Now we have McChrystal, who also seems to want to be involved in the politics more than the war fighting. If McChrystal really does believe that he cannot effectively communicate his needs or concerns to his civilian authorities, he needs to resign. Once he resigns, he is just another citizen who can freely criticize the government. But until then, his duty and his oath require him to obey and support the leaders appointed over him, and the Uniform Code of Military Justice prohibits him from speaking ill of the President, the Vice President, the governor of the state in which he is serving and the Secretary of the Treasury. (Art. 88 UCMJ)
There is no other option, resign sir! You have reached the pinnacle of your career, don't do any more harm to your reputation than you already have.
UPDATE: I just saw this piece by Byron York that is also very telling. If you are going to deploy soldiers, they need to be allowed to do their jobs. If on the other hand, you are telling them not to do anything, then, why are they there? Get them out! At least make up your collective minds.