J.C.
You've had some good responses. Let me add a moment I witnessed twenty years ago, long before I had children.
I was standing in line behind a mom and her daughter in the grocery store. The girl was being very whiny. The mom was unloading her groceries onto the belt with much patience, but I could tell her she was feeling the stress. Then the girl called her mom "stupid" and I froze, totally into their conversation, wanting to see how this poor mom was going to handle it. The mom nodded, took a breath, and said to her daughter, "you can call me all the names you want ... but you can't call me a banana".
The little girl's eyes became confused. I could tell what was going on in her head; "what the heck is Mommy talking about??" But then the little girl's eyes twinkled and she smiled a wry smile. She pointed a little finger at her mom. "You're a banana" The mom feigned sore feelings, "Nooooo don't call me that!" "Yes, you are! You're a banana!" "Nooooo, I'm not" and they left giggling.
I couldn't believe my eyes. It was the most amazing thing I've witnessed. Now, your son is probably a bit older than the girl was and it may need a bit of tweaking, but I think it could work for you too. Acting as if the name calling is not phasing you, and injecting some humor to it would completely take him off guard and could possibly lead you to really talking. If you are really taking his insults to heart, you need to stop doing that. It's giving him too much power over you. Besides, you know he doesn't think you are stupid and you know he loves you.
Good luck.