IE has problems with processing the image returned from a PostBack.
The workaround is to add the following header to the response:
This will force an external handling of the image - that might be either download or opening in an image viewer, depending on user browser settings.
In Windows XP, Vista, and 7, there is a default image viewer installed. It can be opened directly from the browser and allows image printing.
Another option would be to redirect the user to a special printing page using a <a href="Print.aspx?yourParams">Print</a> link, or using Response.Redirect() call in the Button.Click handler. That page would use the printing code right in Page_Load().