I have had the exact same situation occur, but was able to follow these steps to successfully save everything!!
The Unix program "dd" will instruct a drive to stream out all of it's data from beginning to end without regard to file structure, therefore creating an exact block-for-block duplicate. By doing this, it will allow you to copy everything off without having to mount the drive. It also ignores any corruption or physically damaged blocks on the drive which would otherwise crash or freeze the Finder. It saves the data to a disk image file which you can then open and use without fear of imminent failure (the format of the disk image will be the same as the original drive). Now that the data is preserved, you can safely go through and recover your files. Keep in mind that if a file was damaged or corrupted on the drive, it will be unusable, but at least you'll be able to get to the good ones safely. In my case, using "dd", I had no problems and got every file off. If it doesn't work for you, at least it's impossible for just trying it to further damage your files. I can recommend a few other remedies if this doesn't work for you.
Note: The computer must be able to at least recognize the drive. That means either 1) It mounts 2) When you connect the drive the Finder asks if you want to erase or ignore, click ignore and you should be able to do this, or 3) Nothing happens in the Finder, but the volume in question does appear in Disk Utility. If you connect the drive and absolutely nothing happens and it never shows up in Disk Utility, it won't work.
Note: As always, it is suggested that you backup important data on your startup disk before proceeding with stuff like this. It is possible to wipe a drive by mistyping a terminal command, so double check before you hit enter.
-----
_Now, on with the show!_
Prep: Restart your machine so that it goes straight to the login window. Enter your user name and password. As soon as you press enter after your password, immediately hold down the shift key until the Finder finishes loading (this prevents any background startup items from running that might interfere).
1. Attach the drive to the computer and make sure you have another drive with enough free space to hold the entire capacity of the bad drive, not just it's used space, but the WHOLE size of the bad drive (for exception, see very bottom of this post).
2. In Terminal, type:
+diskutil list+
Look for the drive you want to recover in the "name" column, then write down it's "identifier" (ex. disk1s2)
3. In Terminal, type:
+dd bs=512 if=/dev/disk#s# of=/my_directory/image.dmg conv=noerror,sync+
!! Replace "disk#s#" with the identifier you wrote down before !!
!! Replace "/my_directory/" with the path to where you want to save !!
!! Replace "image.dmg" with the name you want to give the disk image (must end with .dmg) !!
4. To confirm that something is happening, open Activity Monitor (in the Utilities folder) and click "Disk Activity". Once you determine an average transfer rate, divide the size of the drive by that and then divide by 60 to see how many minutes it will take to finish. *+! ! FOR LARGE DRIVES THIS WILL TAKE A VERY LONG TIME ! !+* To be safe, do not use your computer for anything until the process finishes, you can leave Activity Monitor open so you can see when it's finished.
If you're only really concerned about a certain files and you know their exact path on the bad drive, let me know and I can give you modified instructions to copy just those files, saving the time and space of doing the whole drive.