A little while back, a friend IM'd me with a problem. Their digital camera wouldn't read from its SD flash memory card. Naturally it was almost full of photos that hadn't been copied off to a computer yet. Bottom line is that I was able to recover just about everything. Here's how I did it.
First of all, I had her take the card out of the camera and mail it to me. I think that's generally good advice. (The taking it out of the camera part--not the mailing to me part.) If you have a problem with a card, stop using it right away. For this reason, it's a good idea to carry a spare card even if you don't need it for capacity.
I plugged the card into a reader attached to my computer (running Windows Vista). No luck; Windows said the card wasn't formatted. Nor would my camera recognize it as a usable memory card. Time for something heavier duty.
What I ended up trying was ZAR, Zero Assumption Recovery. ZAR 8.3 is a suite of data recovery tools for Windows. What was really nice for my purposes is that it includes a mode to recover digital images and that mode is "freeware." (Other functions require the full $49.95 version.)
What was even nicer was that it worked great. A few of the images were apparently corrupt but it recovered about 95 percent of them in a largely automated operation.
Some cards come with their own data recovery software from the manufacturer and I would probably try that first if I had a problem. But ZAR worked well and you can't beat the price.