I'm confused. Your family was coming to spend Christmas with you and you're going to spend Christmas with your husband's family? How were you going to do both? Who lives 4 hours away and who lives 1 hour away? I don't know how to suggest a way to deal with the physical day except perhaps to spend time with both families but on different days. You don't have to see each other on the day of Christmas.
It is painful to look forward to something, make all the plans, and clean the house and have people cancel. It's normal to feel hurt. But don't let your hurt take over. Accept that this is the way it is and make new plans to do what is best for your family given the circumstances.
And don't try to second guess people's reasons. Your sister's husband could've changed his plans. It really doesn't matter why your mother is changing her mind. Trust that she loves you but isn't able to put herself in your shoes.
Perhaps you could invite your family to come over next weekend for dinner and have your Christmas then. That way you could give your very thoughtful gift to your mother and do the picture thing.
I suggest that it's time to get into counseling so that you can work thru your feelings about your mother. Most of us grow up with some angst about our parents and many of us need help figuring out how to feel like adults. We have to learn to accept our parents as they are complete with all the mistakes they made raising us and how they treat us now. They are imperfect but did the best that they could do.
And yes, stop trying to have the kind of relationship you want with your mother. It's not going to happen. All relationships are different. I suggest that there is no such thing as a normal relationship between parent and adult child. Each family is different. You cannot change your mother into being the kind of person you want her to be. You can stop expecting her to be and do what you want her to be and do. Accept her as she is. Doing so is a long process and counseling will help.
Do not write everything down and send it to your mother. Do write everything down and burn it or rip it up into tiny pieces. Perhaps flush it down the toilet. Get everything out. This will help you feel better.
Your mother is not responsible for how you feel. Writing to her will only hurt and probably anger her and will not help you feel any more grown up. Sending her an angry letter is not the way to deal with your feelings. It will create a rift between you which will make it even more difficult to find peace.
After your SWH: Just do what you and your husband want to do. Make a plan and stick with it. If she comes, fine. If not, then that's fine too.
Unless you're leaving town to be with your in-laws. I'm still confused about that. Sounds like your husband wants her to come and you don't. If that's the case then I'd stop thinking about your mother and find a way for you and your husband to agree.
You're angry. Understandably. Often we have to get angry to have the energy to find and state our boundaries. I suggest that once you decide what you will and will not accept and feel comfortable doing that your anger will lessen and you'll be happier.