Sometimes this bothers me, and sometimes it doesn't. I like lsfoster's approach, and I've used it.
Clearly homophobic guy at work: "Those clothes are so gay." (Said with limp wrist, high voice)
Me, polite and pretending to be confused: "Really? My uncle's gay, and he wouldn't wear that."
The guy immediately stopped.
I've done the same thing at people who say "Are you deaf?!" when they really mean "are you stupid?" And some rude, ignorant people definitely do that.
I see the point about language changing. I say "dork" and I mean "goofy person," with no sexual meaning at all. I was really surprised when my Dad (who's in his 70s) got upset by it. Turns out it was originally a dirty word that meant "penis" (and dirtier than "cock" or "dick.")
When I was in high school in the late 80s, people used it then, but I think it really was an expression of deep homophobia. Same way people called someone they didn't like "faggot" or "lesbo." They may not have actually believed the person was gay, but they made it clear being gay was Very, Very Bad.
I think teenagers and college students now seem less likely to mean it as in they have a problem with gay people, but some do. BTW, some kids who clearly don't mean any harm have stopped using it around me when they found out I was gay. Which says something: it still does imply homophobia. I haven't seen people stop using the word "lame" around people who have mobility problems. It doesn't occur to many people 35 and younger that that's what the word literally means. At this point, a lot of people my age and younger would never say someone we knew was "lame" and mean "they walk with braces." We'd mean "they are a loser."
RE medical use of the word "retarded:" that started being used by teachers, medical professionals and families of the people that word refers to as a replacement for words like "idiot" and "moron." Which used to be neutral medical terms, and THEN started being insults! Same thing happened with "retarded" and with "special." So it wasn't that the medical people were bigots.