This problem cost me about four hours of my life, and lots of tedious debugging in Firebug (what I would do without Firebug in my everyday development work, I am not quite sure...)
It turns out this happens because Sharepoint is trying to validate for you - as part of a regular postback you get a full page reload, so Sharepoint does some validation to ensure the page has been reloaded after each postback to a page. However, if you're closing the HttpRequest as part of the postback (to send a file to the user, for example), the page never gets reloaded and thus doesn't get the updated validation information, causing Sharepoint to reject all your attempts at doing a subsequent postback.
Setting _spSuppressFormOnSubmitWrapper stops Sharepoint from intercepting your form submit requests and stops the behaviour mentioned above.
In most cases you would want to leave this on (preventing users from doing triple postbacks in quick succession by clicking very fast, for example), but I think it's a reasonable tradeoff to turn off validation but allow the page to continue working after a file is served to the browser.