The cleaner way to do this would be to use runlevels.
Each runlevel starts a different set of services. While you could simply use a script at logon, you could create a specific runlevel for casual use, server use, etc.
The tool Ubuntu uses to configure what services start with each runlevel is called Upstart. A simple tool 'chkconfig', installable from the Ubuntu main repositories, will help you set those up.
sudo apt-get install chkconfig
Once you have configured each runlevel, you are going to have to start it. I think the cleanest way to do that would be from GRUB.
Create a different entry for each runlevel (copy & paste current kernel startup section to create a new entry), then find the line like: 'linux /boot/vmlinuz-2.6.38-14-generic root=UUID=1459c642-797c-4a9b-be5c-fdfad2a6689c ro quiet splash vt.handoff=7' and add the number of the runlevel you want to boot into at the end.
Example: linux /boot/vmlinuz-2.6.38-14-generic root=UUID=1459c642-797c-4a9b-be5
c-fdfad2a6689c ro quiet splash vt.handoff=7 3
To check the runlevel after boot:
who -r
Below are some links to start you off:
Basics of runlevels
Advanced: Auto-Config of GRUB - so you don't have to manually edit the GRUB file with each kernel release
Using Upstart and Chkconfig