three things to keep in mind:
- different kernel modules
- different openGL libraries
- different xorg.conf
both drivers will overwrite the openGL libraries, making a switch difficult. I also don't think it's possible to have both kernel modules loaded at the same time; the ensuing battle may explode your whole kernel.
gentoo has a cool system in place for the openGL libraries. It'll install each driver's openGL libs to a separate location and symlink the one you need. You can then use
eselect opengl set nvidia
eselect opengl set ati
Of course you need two different xorg.conf and a way to pass the correct one to X. Symlink-trickery works, but
may be easier.
Xorg -config xorg_ati.conf
You may need to modify the init-scripts to only load the correct kernel modules. If you're lucky, Xorg load the correct module automatically (haven't tested that in a while).
You could even write a script to shutdown X, unload the modules, run eselect, load the other ones and restart X with the other config to switch GPUs without rebooting (though I cannot guarantee if that'll work).
If you plan on switching the hardware, simply use $(lspci | grep ...) to detect what's plugged in. Otherwise, add a second runlevel and another grub-entry like
kernel /vmlinuz root=/dev/sdxx softlevel=default_ati
If you don't want to use gentoo, you could write your own eselect-like scripts to add the symlinks. Install driver, move openGL-libs somewhere safe, install the other driver, move them somewhere else, apply symlinks as needed. Be careful when upgrading drivers. Also, your init-system may or may not understand the softlevel= kernel line, but most init systems should have some parameter with the desired effect.
Or, if all that is way to complicated: do as bridgman said, install the OS twice on separate partitions and switch via grub.