Okay here's my experience of using virtualization at home and with a bit of office work:
Xen - for the time I started using it in 2008, a really big advantage was paravitualization mode which allows to run virtualized linux instances really fast -- in that respect Xen is awesome, however there are several disadvantages: in theory you could run anything that supports paravirtualization mode, so that means you could run All the BSDs, but I never succeeded of installing any of them when I tried, windows of course is out. You could run "fully virtual" environment if you hardware supports it, but you're going to just use some bits of Qemu, so there isn't much advantage of running xen if you have the hardware. The nastier bit about Xen, that has been always a pain to initially configure Hypervisor and get bridged networking going, I see it got better in recent years, but it's still a pain, and I just configure network bridge and omit Xen network config entirely; the other thing, at least in Debian, the most recent version of linux kernel it supports is 2.6.26, and generally seems like it's on its way out. On the plus side, xen-tools would let you create a guest in seconds, be that debian, fedora, centOS or any other popular distribution, also libvirt-bin supports xen, so you get a nice GUI management tool, still it's kind of painful to configure and maintain all of this.
VMWare -- I tried server, and this is an example why proprietary software on open source system really sucks. It's not as painful to install as xen, but it is a lot more painful to maintain; every time you update the kernel you need to run a script to rebuild all the kernel modules, this could be automated, but really, why bother? 'm taking about Vmware Server 1.X here, I tried 2.X and instead of a venerable VmWare Console that everyone with more or less success tries to copy (see "Virtual Manager", "VritualBox OSE"), they threw it away and came up with some web-based solution, for which you have to install browser plugin, and it is generally even more painful and slower that server 1.x. Also it's pretty much mandatory to run it on CentOS (Not fedora, because it has too recent kernel, not ubuntu becase there hasn't been a package since 8.10, if I remember correctly, and not in debian because there never been a package, you can always install Vmware from an archive file insted of a package, but it would only result in more maintenance overhead). On the upside your virtual host would get a lot of SMBIOS info if you need that for testing software, but in general VirtualBox seems to be the one-to-one replacement of VmWare.
VirtualBox -- I've only been playing with it recently and it seems that everything that VMWare gets wrong VirtualBox gets right, although it seems a bit desktop-y for me as I haven't tired to run it in a headless server config, also it doesn't seem to support Linux LVM and only stores virtual images as files; but that's all more of a nitpicking I guess it's more of a matter of preferences between it and KVM. I haven't tried reading SMBIOS info so I don't know if it works.
KVM -- it's in kernel and it's always will be supported, I use it and if you have the hardware, it's the first option to be tried out. This thing works out of the box, just install the packages and make sure that amd/intel hardware support is enabled, configure bridge (default option is NAT, but I haven't tried it) and you're done. I'm in the process of converting some VMware images to KVM and I can't be happier, it's fast, Virtual Manager works so well that I don't even have to use command line, which is also available, it supports LVM and for all intensive purposes this is industrial grade virtualization solution, the only problem -- no snapshot support, but I think that was added in the kernel recently (see yesterday's article about new version of linux kernel), and there are ways to get around that using LVM.