Software to switch between OS
Solution 1:
Well, i can think of two. One, run one of the OSes in a VM. The second is to get another system, and run the second OS on that. You can't switch between OSes without restarting.
If you wanted to save the state of the system, you MIGHT be able to get away with hibernating windows, and starting linux as long as you do NOT write to the windows drive - as you can tell from the answers, do this at your own risk. The other way seems to be safe, however.
If you wanted to build a system that would do this from scratch you'd need a model similar to what the PS3 uses possibly on top of xen or another hypervisor
Solution 2:
You can use a virtual machine. One OS (e.g. Ubuntu) hosts another (e.g. Windows) as a guest in a virtual machine. An example is VirtualBox. Your guest OS will be just like another program inside your host OS.
Solution 3:
If you had two different OS running as virtual machines under a third operating system, you wouldn't strictly speaking have to restart the PC to switch between them.