Our family is a bit scattered around the world. During the last week we have had some relatives visiting, who currently have their residences in Germany, Hungary and Australia. Needless to say, it's not often that all meet in the same spot at the same time (unless Skype is involved). So, of course there were some photos taken of the full group. Memory cards were filled, and emptied into the computer. Coming home after work one day, I was told that the card in the camera needed to be emptied. Said and done. When I got the card-reader there was a card already sitting in there. I assumed that it had been left there when I emptied it last time (I usually do not put the card into a reader unless I am emptying it). So, I took it out, put the other card in the reader, copied the files to the computer, then formatted both cards in the camera. Just to realize that the first card had NOT been emptied, and of course it contained the most important family pictures from the week; the rather rare group photo... Fortunately, no new pictures had been taken after formatting, so the card was removed from the camera and rescue attempts ensued.
First I tried SanDisk Rescue Pro, which came bundled with a Compact Flash card a couple of years ago. It did find a good number of CRW-files on the card, but most were corrupted and could not be used by the RAW conversion software that I tried with it. It also provided the possibility to dump the contents of the card as a disk image on my hard drive. Then I started searching for various free-ware and cheap recovery software. A number of them were tried, with various results. But one stood out above the others, since it was a lot faster, and also managed to locate almost all lost files. The $35 that I paid for having a full working copy of PhotoRescue were truly very well spent.
It provides the basic set of operations that you could need in situations like these; backup a card to a disk image and recover files from either a card or a disk image. The recovery can be done in two different ways; either the quick recovery, or the advanced. The difference is that the quick recovery will try to figure out details about the card, while advanced recover lets you specify details about how the recovery should be performed.
To put is short; buying a license for this piece of software is money well spent.