If you have a hard disk with a few bad blocks on it, tools such as Disk Utility can't copy the remaining good blocks over to another disk, because the copying will stop as soon as a read error is encountered. To get around this problem, I wrote a free program called iBored, which is basically a hex editor for disk sectors, but it can also be used to edit files, including disk images.
Using iBored on a disk with bad sectors may take a while, but you'll be able to save all good data before you make any attempts to save individual files from it, or try to repair what's left. If you do the repair or rescue attempts on the copy, you'll not have to deal with any further read errors.
I have also used iBored to repair iPods that had been borked by installing iPodLinux on them, analysed Flash (.flv) files, and much more. It can even access disks remotely over internet.
[robg adds: If you're going to use this tool, pay close attention to the warnings on the author's page:
This program comes with hardly any documentation, and it doesn't explain what it does, either. If you have not used other tools to edit disk blocks or files on a binary level before, you may find it difficult to use.Note that I haven't tested this app.]
Beware: This tool lets you mess with your disk contents in a rather unsafe manner: You can easily write over any data on a disk, rendering the entire disk unusable. So you better know what you're doing, especially if you use any "write" operations. And keep backups of your data on other disks.
Mac OS X Hints
http://hints.macworld.com/article.php?story=20090117144615659