http://gimp-savvy.com/BOOK/index.html?node61.html
A good description of some correction techniques usin "the Gimp".
In principle, you colour pick pick representative points on a discoloured image, and then use RGB curves to match them to points of the correct colour on a similar image.
Works well for the midrange, but you may have to fiddle the top & bottom of the range - obviously, if there is something that should be white, that gives you a correction point for the top of the range.
Ideally, you want a set of points that should all be neutral:
White, light (but not white), mid grey & dark grey.