I only use Linux or occasionally other UNIX variants, so I have to make sure that any hardware I buy is compatible with Linux. I've listed some of the hardware I've used here where it's compatibility isn't well documented, and commented on how well it's worked.

Product Description
Panasonic SV-MP720V Panasonic MP3 Player, operates as a standard USB Mass storage device.
Casio Exilim EX-S2 Casio slimline digital camera, operates as a standard USB Mass storage device.
Evoluent Verticalmouse 2 Mouse designed to eliminate RSI, doesnt like evdev, but mostly works. (update: recent versions of evdev work perfectly)
iomega 32583 USB CD-RW Iomega external CD-ROM, works perfectly with standard linux driver.
Saitek P880 Saitek joypad, works fine with the joydev driver. Works great with zsnes and mame, although the macro feature doesnt work. (I'm not much of a gamer, but I like to play mame occasionally)
IcyBox IB-351-StUS IcyBox external SATA Hard Drive enclosure, works perfectly in USB2 mode with the standard USB Mass Storage driver, and with the libata SATA driver.
IBM 73P2655 Keyboard IBM Enhanced Performance USB Keyboard, the standard keys work perfectly in all operating modes out of the box. In XFree86, the evdev input driver works, but the audio and additional function keys arent recognized. The Kbd driver allows the audio controls to work, but not the extended function keys (Lock Desktop, Internet, Spreadsheet, etc). Strangely, the kernel keyboard driver emulates keycodes over 0xff for these extended keys, which X silently discards. As no scancodes are generated this cannot be solved with setkeycodes, the only solution appears to be patching the kernel to remap the higher keycodes on to unused lower ones (such as F13-F20). This is what I did, and then used xmodmap to assign KeySyms and bind them to actions in fvwm. kernel patch
Belkin Switch2 USB Belkin USB KVM, works perfectly out of the box.