I get a lot of the 'lost' information in photos from the Blue Channel. Even with images as bad as this, go to the blue channel and there's is still loads of info there. Sometimes duplicating the Blue Channel and then adding it to the image and using 'Luminance' to blend it, will pull it pretty much back from the dead. Obviously this will mess with colours a bit but this can be overcome with levels/curves etc.
Some images are that bad that there can be areas that have been completely destroyed, in these cases we are left with no choice but to rebuild parts of the image. This has two challenges, one being getting the right colour and Two, getting the right feel to it. I try and match colours the best I can, for something like a wall or door I would match colour as much as I can, draw what I want in the image then add some Gaussian Noise then Gaussian Blur. This 9 times out of 10 will blend it, because it's on it's own layer you can then mess with levels/saturation etc to match it nearer.
Fav. tools for restoring images are Clone Stamp, Spot Healing/Healing tool and some rather epic blending brushes I have that work perfectly for image restoration.
At the end of the day, there maybe 5 ways to fix the same problem on a photo, which one suites you and how you approach it is what you need to work out. Firs thing for me with any image, before I even start to fix it is Levels, get what colours you have right first then go from there.
Grab some damaged photo's. identify what's wrong with them and we will talk you through the carious ways to 'fix' them.
All my work is completed in Adobe Photoshop CS6 Extended.
Just a minor "PS" to R-M's comments: In addition to simply using one of the channels (eg, just the blue channel), often, subtracting a small fraction of a second channel (eg, the green) will further improve the rejection of the damaged areas and contribute towards an overall improvement in what is going to become luminosity info (aka, a B&W version that needs to be further repaired / colored / re-colored). Also, I usually will use a "levels" adjustment on each of the channels to make sure it fills all of 0-255 before I do any subtraction or other processing.