A senior law partner who never personally argues a case or drafts a contract, but does nothing but attend meetings all day and supervise younger partners and paralegals, is still "practicing law". The chiefs of large hospital departments are still "doctors" even when they don't pick up a stethoscope for days at a time. Late in Beethoven's career, when he was almost completely deaf, no longer able to perform or even to critique other performers, he was still a "musician".
Whereas (e.g.) Joel Spolsky is now a "manager". Except when he's working on Arc, PG is more likely to be called a "manager" or an "angel investor" or a "venture capitalist" or a "technology pundit" or a "marketer" or a "writer" or a "teacher" or a "designer" or a "strategic consultant" or an "executive chef" (I think he does all of these things!) than a mere programmer. But just because these guys somehow don't fit our hyper-narrow definition of "programmer" doesn't necessarily mean that they had a problem with their software careers. It might just mean that there are many opportunities in software -- some quite rewarding or lucrative; many of which are best performed by someone who also knows how to program -- that aren't captured in the scope of the term programmer.
Part of the reason why there seem to be so few "programmers" in their forties and fifties is that by that time many of them have dreamed up a better job title for themselves, like "senior member of the technical staff" or "chief of QA" or "Java architecture consultant" or even "co-founder" or "CEO". Spolsky loves to tell the story about his Bill Gates review:
http://www.joelonsoftware.com/items/2006/06/16.html
At the time of that review, Bill Gates had not been called a programmer for years and years. He was a CEO and a co-founder, and was paid accordingly (and then some). But what was he doing when he reviewed a spec in gory, technical detail? He was programming. At a higher level than the average college intern, yes, but just because you're not touching a keyboard or dealing with individual calls to malloc doesn't mean you're not programming.
Unless we decide that it does. But then we shouldn't be surprised to find that programming as a career is something that many people eventually grow out of. We've defined it that way -- as a term to describe an activity that doesn't scale well and that usually represents only a portion of a well-balanced intellectual or economic diet.