What do you find "wacky" about the header? Do you mean all the extra reference to xml? I believe that is served up by IIS. If you have control over your server, you can modify that setting to output a more conventional header. If you need info on how to do that, let me know.
As for the code, when I run it on my Win2K PC, it seems to work with no errors, but it adds two headers to the output. As you noted, getting rid of the $q->header takes care of that. I don't see the problem. Perhaps it's a browser issue that's croaking on the header. If you have an older version of IIE it might not like the XML stuff in the header. Just a guess.
Update:Ok, I admit it was a bad guess and a worse answer. Pay no attention to me. I've been particularly dull-witted all day.