1. SMART failure. The drive firmware itself reports it is bad. This can be detected with Linux tools (none that I am aware of are included in Damn Small Linux). Unfortunately, older drives don't support SMART.
2. Bad sectors. If SMART doesn't exist or isn't enabled on the drive, these can often only be found during a full format or read/write surface scan. You could test a hard drive that you don't have data on by doing
dd if=/dev/random of=/dev/hdX bs=512kbut may take awhile. A fast computer/drive should be able to do about 2 GB a minute; I wouldn't even want to guess how it'd do on a 486.
3. Electrical failure / bad firmware. Since the drive won't be detectable, there's no way for Linux to detect that it is bad.
There's also the fourth way, the horrific click of death, but most people should be able to hear it.