One possibility (a bit similar to @KCotreau's suggestion) is to use ddrescue to clone it to either another drive (at least as large as the original) or to a disk image file.
What ddrescue does is to copy the contents of the drive, skipping over any sections that don't read successfully; then it goes back and retries the sections that got errors on the first pass. The longer you leave it running, the more data you'll get (unless the disk is completely unreadable).
You can even let it run for a while, then mount the recovered volume (it must be read-only -- if it's an image file, just lock the file before mounting it) and see if your files are there. If not, dismount it, unlock, and rerun ddrescue to see if it can get any more. You could also run filesystem repair tools on the recovered disk/image, but if you run anything that modifies the volume (at all), you will not be able to continue the recovery (you'd have to restart from the beginning).
Using it will be a bit unintuitive on OS X, since it wants to work with the unix-level device file, not a mounted volume. There's a procedure on tinyapps.org for how to use it to recover a Mac's internal drive; in your situation you'd just skip step 1 and use USB instead of FireWire in step 4.
There is ddrescue as a compiled binary for OS X on TinyApps. The important thing is that their download links require an account/password. The account is the first line of text in their logo (case matters!) and the password is the second line of text in their logo (see the TinyApps.org FAQ for an explanation).
The TinyApps.org Instructions on using ddrescue
(Note: this is a mostly-copy of my answer to this earlier question.)