OP, everything you write was my life, a month ago. Absolutely everything. I'd been biting my tongue for years, not saying how desperately unhappy I was in our marriage (because once you say something, it can't be unsaid), keeping it together and burying my own wants and needs for the sake of DH's mental health and for the sake of 'keeping the family together for DS'. Who is also 5, just like your son.
A month ago, I finally found the courage to say to DH (after another stupid bicker) that this is no way to live, that it wasn't working. His reaction - that he entirely agreed, but similarly lacked courage to say so - staggered me.
The last month has been bloody difficult, I can't deny it, as we start to unpick things and work out who goes where and when - but because there was fundamentally nothing 'wrong' (i.e. abuse, being at each other's throats etc. - though there sure as hell wasn't anything right either) we've been able to go about it with much the same atmosphere in the house. We haven't actually told DS in black and white yet, but we've started to prepare him by talking about a 'boys only' flat and suchlike. He is coping well and clearly knows something is afoot, but we can pave the way together and actually tell him when the time is right (extremely soon, I think). Here, the fact that you and your DH are not constantly rowing in front of him will be your biggest strength.
I looked at my life and knew that I owed it to myself to make the decision to separate sooner rather than later. I owe it to our son, to raise him as best we can apart, but know that we're no longer skewing his perception of what a healthy adult partnership should be. And I owe it to my husband, who can't give me what I need, nor I him. That's no way to live. It really isn't. Everything pp's have said rings so very true to me, being in the midst of it as I am. Yes, it's bloody hard and we certainly have our moments, but I still don't regret it for an instant. We're a long time dead, love.