I wouldn't do that at all if I wanted that functionality. I would use a toolstrip instead of a button. You can float them anywhere on your form, and make them transparent. You can set up a number of buttons, and hide the button with the image you want to remove, and show the button with the one you want to show. This makes adding functionality for the different button states easier, as they each have their own event handler. I did this in my CodeProject article:
SharpZipLib or DotNetZip... Which should you use? Why not download the project and have a look? I think you'll be happier doing it this way then using a standard button. I never use them anymore myself.