Hardware is currently fairly well supported. There are devices that work on Linux but fail on Windows. Wireless networking and dial-up modems are currently the most problematic pieces. On some distros they work well, on some they don't work at all. But most of the times, you need to go under the hood and fix that stuff. Major graphic cards are now quite easy to install on Linux.
Software compatibility? Well, if you're looking to run Windows software on Linux, it can be done. Lots of software packages are supported (Office, Photoshop, many games) but you need to get commercial software such as CrossOver Office (http://www.codeweavers.com/products/cxoffice/) in order to run them. Codecs are still illegal in the States, but you'll have no problems in EU (AFAIK). Major players like RedHat and Novell, steer clear of codecs in order to avoid lawsuits, but Ubuntu leads the way by allowing transparent installation of codecs after a little warning. Some distros ship codecs (Knoppix) and some have them in their main repos (Arch Linux) while yet other distros rely on free alternatives (Slackware with xine-extracodecs), which play a fair amount of various formats (all but wma and rm). RealPlayer is available for Linux, as well as flash player (Adobe) and Java.
Native Linux software is getting better and better every week. So you will probably want a distro that has latest stable versions of software (like Fedora, Arch Linux, Gentoo, Debian). Currently, editing DV and doing graphic design is still a bit painful, but at least for DTP we are looking at about a year's development before we have viable alternatives to commercial software.
Hardware detection has always been better than on Windows, so there's no change in that department. We are just waiting for more hardware vendors to start making drivers for Linux.