1) If you are editing while debugging, you'll need to make sure you save the changes first. Then you will have to hit refresh to see the changes. An error will occur if certain things are changed and you try to re-post the old page to the new one that was just saved.
2) I have this problem with IE sometimes as well. Instead of closing the browser, you could just manually stop debugging. That will close the process (FireFox), as well. Is FireFox your default browser in Visual Studio? (You can still debug with it even if IE is your default; simply copy the URL from IE and paste it into the address bar of any browser. Server-side operation and debugging work the same, except for scripting -- untested).
3) Several things could be causing Page_Load to occur twice. I know an old-fashioned coder who doesn't like a hierarchy of functions, so he puts everything in an event handler and calls the event handler multiple times throughout his code (definitely a bad idea!). Another reason it may occur is due to having a Handles clause at the end of the event handler in addition to the Page having the AutoEventWireUp property set to True in the aspx code.
---------------------------------------
MCP - Web Based Client Development .NET 2.0