I was at a real low point when I made my post- can't possibly go into detail about all the great times we have and what kinda things we do together one on one and as a family and how much fun we have as a family.
It's great to hear that you do have lots of great times when things go well. The problem is what you and DH are doing when things go badly - which they can do in any normal family. You and your husband need to restrain youselves from saying hurtful things to him - just as you'd like him to restrain himelf from saying hurtful things to you. If his parents tell him that you wont support him in future, or that you want him to leave home, or that he is making you ill, then in the long run that can do real damage to a young person. To avoid that trap you need to reframe the way you think about him - and when you and DH do that yourselves, you can also help him to reframe his own thoughts.
When you are at a low point make a deliberate effort to normalise him instead of catastrophise about him. Keep reminding yourself that many ordinary families go through bad times and many ordinary teenagers can be (very!) rude. And families do get through it, and teenagers do grow past it and turn into decent people. Even say that aloud to yourself!
And try to re-frame your thoughts about him into "I" language. (You can encouarage him to do the same!) Focus on how you feel not who he is. For example, when you find yourself wanting to say "My sons behaviour is intolerable" replace that with "I can't tolerate his behaviour" or "I don't want to tolerate his behiour" or "I don't think I should tolerate his behaviour" or "I find it hard to bear when he is repeatedly rude". Sometimes parents do have to bear bad behaviour so as to correct the behaviour in the long term; they can't fix it on the spot because that isn't possible, but they don't have to let it make them ill or spoil everyone else's day either. So not "He is making me ill" but "I felt ill after he did (whatever)" Then the prioirity becomes, not changing his behaviour right now, or making him back down and apologise right now, but find ways to staying well yourself or to make sure the family carries on whatever he says or does. Using "I" language helps you focus on making life tolerable for the rest of you. Your family happiness needn't depend on changing him and you'll both feel less tempted to talk about throwing him out or stopping supporting him.
As for him, he wont be saying "you are fat" out of the blue for no reason, it will probably be in the middle of a quarrel or after a scolding or because you're making a demand that seems too much, or because he feels bad about himself. So he shouldn't be saying "you are fat" but "I am hurt because you said...." or "I feel bad because ...." or "I can't .. because ... ". For him to reframe his own thoughts, you would have to understand how what you said was hurtful, or accept that he had a vaild reason for rejecting your demand (and help him negotiate with you to find something that works for both of you), or find ways to make him feel better. And that's where family therapy or mediation can be such a blessing.
It sounds as if you have a very important inner value of being "a family" where everything runs super-smoothly so it's especially hard for you to manage a child who is spiky and who doesn't fit your family ideal. With a child like that, you give them love and tolerance, and space when they need it. Then your "family" is still very much a family though not always not the ideal you imagined.