Edit: Actually, there's a bug in GNOME that will allow you to achieve what you want quite simply. All you have to do is set a window, any window, to Always On Top. All windows subsequently opened will do so in the background and won't get focus. I recommend you make eg a terminal as small as possible, stick it out of the way eg in a corner, and set Always On Top.
Note that this fix is simple to implement, but in actuality is a messy workaround not a real solution, and will stop working as soon as the linked bug is fixed (though that could be 2+ release cycles away).
There is a gconf key for Mutter to prevent applications from stealing focus:
Launch gconf-editor, navigate to apps --> metacity --> general and set "focus new windows" to strict.
You may find that this is not enough, and that some or all apps are still launching with focus. At the very least the above will stop apps launched from the terminal from stealing focus, so you can workaround this by doing the below:
Pretend that menu items and panel buttons are launched from terminals, by modifying their "command" field.
gnome-terminal -e firefox
Some applications will not return the prompt immediately, therefore a further step is needed in the form of a script.
The command is
gnome-terminal -e "/bin/bglaunch.sh firefox"
Where /bin/bglaunch.sh is the following script, which launches the application in background:
nohup $1 >/dev/null &