This is my first time on mumsnet, so forgive me if I don't get the abbreviations right! I started off by looking for a hamshank recipe and then got sidetracked by this discussion, which I find fascinating.
As a complete outsider and novice to this, maybe fresh eyes can help.
One thing is certain- one human being cannot change the behaviour of another, all we can change are our own responses. It sounds like the two of you have many well rehearsed scripts which you use to communicate your respective anger and disappointment to each other with, but nothing is ever resolved because they are merely scripts and both of you know where each discussion will end up. I take it that you don't want to split up, you want him back how he used to be. That can be done. Far more powerful than shouting or trying to stand up for yourself in the ways you describe is to take control of the script- change your responses to dh's provocations. This will confuse him and cause him to change his script too. I know you will think you have tried this but in reality you won't have because it's difficult to do, the old script will assert itself without you realising.
Try this exercise:
Make an appointment to speak to him about how you feel. Control it in your terms- no need to be rude or angry, just say politely and at a time when he is relaxed/receptive that you have something to say to him, but not right now.
Don't be drawn into a discussion there and then, fix a time and stick to it. I guarantee he will be so curious he will go along with it- he will also be worried about what you want to say- it could be your health, dcs health, an affair, your decision to leave him- all this will be in his head so you have control because only you know what the real issue is. Believe me, he'll be so releived when it's none of the above he'll be only too receptive! There must be no alcohol involved either before or during the discussion- this is very important. Also, do not give in to demands/anger/threats at the time of appointment making. Stay calm and in control, make him keep the appointment which must be at the earliest the next day.
Write down the things you want to say. This is very important as the brain has a way of shutting down so we don't say what we intend to- rehearse saying the words but also keep the paper with you as you speak- it will focus both of you.
Keep it simple, 3 points only. For each one, use this script:
When you..... it makes me feel..... In future I would like you to .....
Try to make the language positive, this is why you need to write it all down and practise- words are powerful and it is possible to auto- suggest responses.
so, "When you refuse to pay for appropriate tablewear, it makes me feel embarrassed for you in front of our guests. In future I would like you to think about how uncomfortable that makes both me and our guests feel when you put us in that position.
Give him time to respond. Concentrate on how the behaviour makes you feel- get him to understand that, don't be sidetracked and don't talk about the detail of the behaviour- he knows what that is. Don't blame or criticise. People only change their behaviour after they have owned it- this is powerful. He needs to say 'I am being unreasonable and this is what I'm going to do about it'. You only need to lead him to that thought.
Stay calm and focused. Do not be tempted to revisit old territory or play the tit for tat game.
I'm sorry this is so long, but I do have professional experience and I know this technique works.