Try the Supernanny method: Write down the rules, the main ones, the important ones, and post them somewhere prominent. I know he cant read, but YOU can, and it will help you remember what you want for your son, family, and household. The problem is, every time you give in when he cries (I know, you know this) it makes him scream louder and longer the next time. My daughter is 26 mos, and we started time outs (again, the Supernanny way, to a T) when she was 15mos old. We posed the rules that if broken warrant a time out, so there is no question. I, the parent, cannot ignore the list. Now, I can even point out the rule broken to her, and she does seem to get it that the letters up there say "No hitting." or whatever. By the time she was about 20 mos old she was behaving very well. So consistancy on your part, and your husband's part, is key. Everyone has to be on the same page. Figure out the "Naughty Top 5", just that many rules, and start with that. What's the worst things he does? If you punish him one day for something and give in the next, can you imagine how terribly confusing that is for him?
Remember! You are helping mold an adult, not raising a child. Being a good parent isnt fun, it means making him furious with you once in a while (or often, depending on the age). But if he is sometimes mad at you, it doesnt mean he doesnt love you. It means you are doing a great job at the hardest job in the world. Try to look at the long run, not the next 10 min. It isnt truly being nice to be nice.