BSD does lag behind Linux in development - for the sole reason that code which is not considered "well-tested" doesn't make it into the kernel. The disadvantage is that there is no "bleeding-edge" hardware support, but the advantage is that once the hardware is supported, you're pretty much guaranteed it will work well, without much effort. On the other hand, many of the "bleeding-edge" Linux drivers (try using a devel kernel sometime) don't work, many of the interfaces to the Linux kernel change between releases, and programs built for an older version of kernel don't necessarily work with newer versions.
I used Linux for six years, in production environments. I rarely had a system upgrade go well - I usually ended up having to re-install. Currently, I work for Oracle, who is pushing for everyone to adopt Linux. Unfortunately, most of our software (not the database, but our "clustered filesystem" driver) only works on a specific release of the kernel, and then, only with a very specific set of patches. This is clearly MUCH more effort than the added functionality is worth, wouldn't you say? After gritting my teeth with each Linux component upgrade, I finally tried FreeBSD out after a friend gave me a CD. It installed much more quickly, with less overhead, and has been more maintanable overall than most Linux distributions ever could be. (My comparisons are against RedHat 4.1 and Slackware, of course. Nowadays, I prefer Lycoris, but I've coded for them so I'm biased... :))
(FreeBSD != OpenBSD, btw. OpenBSD lags well behind the others for the reason that it is extremely paranoid about updates. Each new feature must go through an extensive regression test before it's considered secure enough [i.e., without root-exploitable bugs] for inclusion in the kernel.)
For the record, FreeBSD supported plug-and-play before Linux did. It also supports SATA more stably than the reports I've heard from Linux 2.6. Our CardBus support may not be totally caught up with Linux yet, but it's rare that you find a device that's not supported. FreeBSD had a working bluetooth stack before Linux did.
As for the GUI, KDE runs on FreeBSD as well as it does on Linux, so there really isn't any difference in using the two. In fact, most Linux programs run just fine under FreeBSD - check out the ports tree if you don't believe me.
The final advantage I give for running FreeBSD over Linux is that FreeBSD is shipped as a unit-tested bundle. What do I mean by that? I mean the kernel, the bintools, fileutils, compiler, and all of the base products are built and tested as a single unit before release. Linux, on the other hand, is only a kernel. Any tools that you use (/bin/ls, /bin/bash, etc) are third-party add-ons which aren't maintained in the same place as the kernel. If you track the bleeding-edge Linux development kernel, this leads to many interesting situations where the bintools don't match the Kernel ABI.
hope I haven't bored you to death with all of this flotsam. :)
Linux uses a different philosophy, which unbundles the kernel, allowing many distributions, all using the same kernel base. This has advantages of course: in a general sense you get more bang for the buck -- all distributions benefit from kernel enhancements, whereas you have FreeBSD kernel developers, OpenBSD kernel developers, and NetBSD kernel developers.
As a result, there are by definition fewer troops to look at each type of kernel. If you have lower market share, this can be really bad news.
Using RedHat4.1 and Slackware as comparison points for Linux is not terribly fair. Any BSD would have been better than those relics. But modern Linux distributions have become astonishingly slick, and things *really* work out of the box these days, wifi, even SATA.
Back in the old days i used to have to recompile the kernel to support NFS servering for example, now it all happens automatically, since about RedHat7.3. The RedHat or SuSe automatic net based install tools are also getting *really* nice. It means that it takes only about 2 minutes (not a typo) of my time to setup and install a new machine -- i type in a couple of commands on the installation server, boot up the new machine with a special CD-ROM, and walk away. The installation is automatic from that point forward.
All anaconda and python based...
So, if you hurl flotsam in my direction, i'll hurl jetsam right back!! cheers...