Creating images of a drive prior to the recovery processing is always a good idea. If you will be expecting a lot of I/O errors, ddrescue might be interesting for you.
http://freshmeat.net/redir/addrescue/55349/url_homepage/ddrescue.html
GNU ddrescue is a data recovery tool. It copies data from one file or block device (hard disc, cdrom, etc) to another, trying hard to rescue data in case of read errors. GNU ddrescue does not truncate the output file if not asked to. So, every time you run it on the same output file, it tries to fill in the gaps. The basic operation of GNU ddrescue is fully automatic. That is, you don’t have to wait for an error, stop the program, read the log, run it in reverse mode, etc. If you use the logfile feature of GNU ddrescue, the data is rescued very efficiently (only the needed blocks are read). Also you can interrupt the rescue at any time and resume it later at the same point.
Combine this with a cheap USB2IDE or USB2SATA adaptor and keep it in your geek bag!