A common way to check the health state of a hard disk is SMART. It gives various informations about occuring errors. In Linux, there's the
smartmontools package containing tools to read SMART data of hard drives (smartctl -a /dev/[hddevice] gives you a bunch of information).
I found it always frustrating that SMART didn't work with USB drives. It's a standard bound to IDE/ATA. Although common USB-drives are internally IDE/SATA, sending the SMART commands to the drive requires proprietary extensions. But now, the smartmontools-developers have included support for some USB drives. It worked with the USB HDs I had available for testing.
There's no release yet containing the USB-support. If you're on Gentoo, you can fetch a live-CVS ebuild
here.