I stumbled on this a couple of months ago, via another boingboing discussion:
http://faculty.washington.edu/wcalvin/LEM/Its all about the early evolution of language - but relevant here is the discussion of altruism in human evolution. Mathematically, altruism doesn't work, long term, because cheaters eventually swamp the honest participants. BUT, during doughts or other hardship, hominids may have temporarily broken up into smaller groups, and those groups practicing altruism would have faired better. Language itself, according to these guys, could have been a necessary tool to police cheaters. Check it out.