I had some problems with my Mighty Mouse in that the Primary and Secondary clicks were reversed, so that if I had set a clicker to be a Primary (left) click, I would get a Secondary (right) click from the mouse. This can usually just be changed in System Preferences (by just setting it as a Primary where you want a Secondary), but I wanted to set up my mouse so that both the left and right clicker would be a normal/Primary click, and you cannot change both clickers to be Secondary there (had I had a fully funtional mouse, I would just set both as Primary and there would be no problem).
This led me to discover where these settings are stored, and it seems to be in the file com.apple.driver.AppleHIDMouse.plist in your user's Library -> Preferences foler. Open this file with Property List Editor (installed when you install the Developer Tools), and you can change the settings to whatever you like. What I had to do was to change Button1 to 2 (normally this would probably be 1) and Button2 to 0 and ButtonDominance to 1. After you change this file, log out (I'm not absolutely sure that you need to this but it seems to help) and make sure that you do not change these settings in the Keyboard & Mouse panel again -- that will, of course, reset your changes. You can, however, change the other mouse settings like scroll speed as you like.
You can also use this file to change the behaviour of the other mouse buttons. I wanted to change to scroll ball button clicker to act as a secondary-click (control-click), and I could not do that in System Preferences. However, in the plist file, I just changed Button3 to 1 (on a normal mouse, this should probably be 2).
And remember that you cannot only launch 'normal' applications by selecting them with Other in the pop-up menu in the Keyboard & Mouse prefernce panel. You can also save AppleScripts as applications in Script Editor, and then launch those scripts with a mouse button -- so that way, you can make it do nearly anything you wish. In the plist file, the Class of the button changes to String and the Value is simply the path to the application.

