Then make the decision and finish it now!
You know you won't change your mind, so by delaying things you are a) delaying being happy yourself and b) giving him some hope when you know it isn't real. If he is a decent person that isn't a fair thing to do. If he isn't a decent person, he doesn't deserve your concern.
He has treated you like rubbish, and only when you tell him you want to split does he start making any sort of effort. And I'm not convinced he's doing anything different other than making promises and sending texts. No effort required at all.
He sounds vile. Selfish. Thoughtless. No respect. Pawing you when you've asked him not to. Making decisions about your home without talking to you. Making you struggle financially. Ignoring your feelings. That is who he is. And any shortterm changes he makes in order to reel you back in will be just that - short term. He will revert to his normal behaviour very quickly.
And even if he was a decent person - you don't love him and don't fancy him. There is no future in this relationship.
Please stop putting his feelings ahead of your own. Has he ever put your feelings first? From what you've said he's never bothered with your feelings at all. Treat him as he's treated you - do what you want, do what's right for you.
You could have a much happier Christmas, in your own (maybe modest, rented) place. Free and happy and looking forward to a much happier future.
If you decide to wait it out until January, what will change? He might put a few weeks of effort in. More bunches of flowers, a showy Christmas gift, declarations of love that are meaningless, promises that he never intends to keep.