Your letter is a laundry list of his faults, which you repeat in an apparent effort to convince yourself of all the reasons why you should let him go. Obviously, if you were already sure about ending the relationship, you would have ended it already. The real problem here isn't how to let him go, but how to overcome your own conflict so that you can move forward and let him go, which is what you want to do.
To let him go you need to understand why you want to stay with him. You say you love him, but the question is why. When you describe his behavior it doesn't sound very loveable. To understand why you are so in love with him, you need to understand who this person represents from your childhood.
I am sure that you grew up with a parent who you loved but who let you down. I am also sure that you had the fantasy, as all children do, that if you were a better girl that your parent would change and be more loving to you. When you dig deep and examine your first relationships of childhood, you will see that this guy represents one or both of your parents.
The attachment to him is connected to your wish to fix your parent. If you can succeed in fixing this guy, you will feel as though you healed your parent as well as your childhood wound.
You need to see that the unhealed childhood wound keeps you tied to this guy. To give him up would feel like you are giving up the hope of ever healing your early wound. To understand more about what I am talking about read my archived articles on unfinished business and repetition compulsion. Understanding is key to being able to set yourself free of this dead end relationship.