What virtualization solution should I use if I want to use real partitions? I prefer to install each OS on its own partition and be able to boot it without virtualization or to boot it virtualized while I am under OS X.

The question is what virtualization solution does support this. Please answer only if it worked for you and also include some guidances. 

So for, I was able to boot Ubuntu VM using Parallels, but I was not able to add a real  partition to VM under VirtualBox or VMware Fusion.
I've used raw disk access under VMWare Fusion.  It's less than intuitive, but it works.  The helper app (and google-fodder) is /Library/Application Support/VMware Fusion/vmware-rawdiskCreator.

Important: Consider this a "from-memory, basic idea of what the process requires", rather than a howto - please do google for "fusion vmware-rawdiskcreator" to find a proper walkthrough if you choose to go this route.  I can't promise my memory is accurate enough to trust your partitions to.

The biggest catch is that it won't find the partition unless it's been previously booted with Boot Camp, or you've used rEFIt's partitioning tool to sync the MBR. vmware-rawdiskCreator reads the partition list from the MBR, which isn't otherwise kept in sync with the GPT  (bios partition tables vs EFI partition tables).

Try:

$ /Library/Application\ Support/VMware\ Fusion/vmware-rawdiskCreator print /dev/disk0
Nr      Start       Size Type Id System                   
-- ---------- ---------- ---- -- ------------------------
 1          1  976773167 BIOS EE Unknown


(disk0 is your first disk).  If you get similar results to mine (one big partition type'd BIOS), you don't have the MBR synced with GPT.  rEFIt (refit.sf.net) is my preferred way to do this, but bootcamp will do it for OSes it supports.

If you do get a list of usable partitions, you then need to create a vmdk (VMware's disk format) pointing to the right partition.  This is done with

$ sudo /Library/Application\ Support/VMware\ Fusion/vmware-rawdiskCreator create /dev/disk0 n Filename lsilogic


Where /dev/disk0 is the physical disk containing the partition, n is the partition number listed by the first command (print /dev/disk0), and Filename is what you want to call the resulting disk image.

You can then change ownership of the two files it creates (Filename.vmdk and Filename-pt.vmdk), and use them as existing disk images when creating a VM.

Not so straight-forward :) It does work though; I've used this method to install linux on a machine that has a dead optical drive.