You see, if you're the one creating the toxic atmosphere you have two choices. Please don't take this personally as I'm trying to stay as objective as possible.
1: Leave him/Her. However, make it blindingly obvious that you are leaving because you can't handle how badly you've treated him/her and you think he/she deserves better. Don't even dare mention his/her bad points to try to make yourself feel better but show him/her how sorry you are and ending the relationship is your way of trying to make it right.
2: Stay. BUT!! Sit him/her down. Tell him/her that you recognise how you've been acting and that you know it's wrong. Tell him/her you're sorry and that you are going to work every day for the rest of your life to make sure that never happens again. If he/she sees the light and decides he/she wants to leave you, deal with it. He/she is under no obligation to stay with you and you apologising does not give you a guilt-free pass for what you have done.
I'm sorry if I sound harsh but toxic relationships can destroy people's confidence for years and if you recognise that what you're doing is wrong, then you have absolutely no excuse to continue on with it.