I've used FreeBSD as my desktop for a long time and would continue using it if it supported the hardware in my new home machine (no drivers for this particular WiFi USB adapter, and not that great support for Intel graphics[1], unfortunately I was in a hurry and didn't have the time to pick and choose the hardware). I have only the best words for FreeBSD. The best way I would describe the experience of using it is you can just feel the clarity of thought that the commiters have. Almost everything is really well thought out, clean, logical and backed with fairly good arguments. Documentation is excellent -- I never had to dig around the internet to find a solution. Everything is well explained in The Handbook[2] or the man pages. A few corner cases you might encounter usually get solved quickly on the very helpful mailing lists. The community is likewise excellent. Aside from a few snide regulars (just users, not developers), people are very helpful and polite.

Ever since I switched to Linux (it's been a few months now) because of those drivers issues, a small part of me dies every time I sit in front of this machine. :) What comforts me is that FreeBSD is focused on the server side, and doesn't compromise that for desktop battles which IMHO are lost to proprietary systems anyway. I would gladly accept using any convenient piece of crap on the desktop, such as Ubuntu or any other Linux distro, if that means FreeBSD stays focused on serious business(tm). On the server, you can take it from my cold dead hands.

Now, to get in the right state of mind for using it on the desktop you have to understand one simple fact -- no desktop related software is part of FreeBSD. FreeBSD is a whole operating system developed in unison consisting of the kernel, standard BSD and POSIX userspace and some necessary third party software without which it would simply not be a complete Unix system. Everything X (and desktop) related is part of the Ports system (i.e. third party software ported to FreeBSD but not part of it). This means that if you want Ubuntu level integration and functionality of your desktop you'll have to configure it yourself. I've seen many people who didn't understand this point clearly get frustrated and angry and miss the beauty of it.

So, for desktop use:

Pros (in no particular order):

* The sound system -- unlike the Linux mess, FreeBSD always had a sound sound system. ;) No need for PulseAudios of the day or whatnot to get multichannel, etc. it's all working right there in the kernel.

* The Ports -- you simply get the latest versions of applications as soon as available. Note however that sometimes Ports contributors and commiters can lag and you might end up waiting, but since the Ports tree is unique and shared among all supported releases of the system there is no policy of keeping outdated version of applications (it's partially a side effect of the fact that Ports are not part of the system and as such need not be stable, although some important things, and where it makes sense, have multiple versions maintained). High profile software usually gets updated within a few days.

* One of my favourites is GELI, the GEOM[3] module for disk encryption. It's so straightforward and easy to use (command line tools only) it's a real joy. It supports cool stuff like having a USB stick as a token in addition to a password. Because it's part of GEOM you can layer things completely freely, although with some caveats if you use GPT partitions.

* Some enterprise/server class features that might come in handy on the desktop -- Jails, GEOM in general, ZFS, PF...

* For Linux only applications there's Linuxulator (kernel translation for system calls) which works great although it's a bit dated (I think it doesn't support stuff added since Linux 2.4, may get updated eventually). Works with no performance penalty.

* Sanity and peace of mind (granted, this is subjective)

Cons:

* It may not have the drivers for some popular desktop hardware. FreeBSD is really server and enterprise oriented and it shows in driver availability. YMMV and always check the Hardware Notes for a particular release. Nvidia cards are fully supported with the proprietary driver.

* My personal pet peeve -- for years and years TeX Live wasn't available for FreeBSD. It's slowly changing and it should go into the Ports replacing the ancient teTeX (similar for Sage Math).

* The Ports -- yes they are in the cons too. While it didn't bother me that much, building stuff from source can be a burden. On faster machines it's not that scary, but each time Perl, pcre or something other that a lot of stuff depends on gets a version bump, if you're not careful, things can get hairy. On the other hand PKGNG, the new binary package management system, is great and once the new format packages become widely and officially available all of this will become a non-issue.

* As I said, you have to configure most things of interest on a desktop machine yourself. Apart from what vanilla desktop environments offer themselves, there is very little system level hand holding. OTOH, most if not all of it is documented.

* I'm not sure of Gnome 3 status right now, there were some problems. KDE 4 on the other hand has a great ports team supporting it and it's regulary updated, no problems there.

General remarks that are neither cons nor pros:

* Flash works fine in my experience (since it's Flash for Linux it requires Linux emulation enabled) but since HTML 5 become the norm I never bothered with it (for stuff not supporting HTML 5 video I just used applications which use Mplayer to stream flv and that's actually how I prefer it).

* Gaming -- if it works in Wine it will work in FreeBSD (having an Nvidia card is recomended).

[1] The basics work from 9-RELEASE onward at least up to Ivy Bridge graphics, but going to console from X via Alt+Ctrl+F<n> doesn't work and I think there are some other minor issues. Nothing absolutely critical, but I like things that work to work properly, it's the FreeBSD way after all.

[2] http://www.freebsd.org/doc/en/books/handbook/

[3] https://en.wikipedia.org/wiki/GEOM

EDIT: formatting