As everyone else as mentioned, keep it brief and to the point. Address to your manager and cc someone from human resources. If you don't know the name of the HR rep, you should cc your boss's boss.
Since you had many issues, a simple 'This letter is to serve as my official notice of resignation effect mm-dd-yy. Thank you for the learning opportunities.'
If you had enjoyed your experience, you can express 'regret', etc. I've only resigned twice. The 1st time, I wrote a very nice letter since I enjoyed the people and my experiences there. The 2nd time was much less emotional.
All grievances should be aired during the exit interview. Even then, you should be as professional as possible. For example, when I left my 2nd job, it was mostly because the department lacked any project plan - everything was temporary and no sense of where we were headed. The last straw was when my boss told me during my review that his boss wouldn't sign off on a promotion for me because I didn't stay late to learn new stuff. I asked him what I should be trying to learn. When I put in the request for training (I really saw little point because I didn't want to learn something that we weren't going to use.), it was turned down because they had changed their minds (only 3 days elapsed.) That's when I had enough. During the exit interview, I just said that there was no structure in the department that would lead to future growth for me. I didn't tell her what had happened during my review til she asked me for an example.
Shortly after I left, someone else from the dept quit. After she left, they gave out interim raises. Less than a year later, they had brought in a management consulting firm who restructured the entire department (my boss's boss was demoted.). Less than a year after that, the company filed for bankruptcy as a result of financial mismanagement. Ironically, my former boss ended up at my current employer. My present boss said 'Hey, didn't you used to work at xxx? Do you know this guy?' I have to admit that I was somewhat happy to tell my boss the truth - my former boss had never programmed a single line of code during my 2 1/2 yrs at that job and did not have the skill sets we needed. Imagine my shock when I saw the guy at a company wide meeting 2 weeks later - another group in our IT dept had hired him. About a month after that, we had a fire drill. As we were re-entering the building, someone said to me 'Angie, you get 2 demerits'. I said 'For what?' He said 'for letting us hirer him'. I just said 'You never asked.' Anyway, the former boss was fired within a year.
So, Toni, take comfort in that sometimes bad bosses do get paid back.