L.,
I've also dealt with this and tried many things over a period of time. I've grabbed both my boy's wrists, firmly, but not so it would hurt,so he couldn't hit. He then began trying to kick, so I immobilized his legs. Then it was bite, so I made certain he couldn't reach me with his teeth. Then he got really upset, so I turned it into a game, either tickling hime, holding my palm up flat and telling him to punch it as hard as he could, or saying, "You can't get me and moving around a lot until he just wore himself out, or the anger wore off". These all worked and we could then begin having conversations about his anger and how to handle it.
Forget talking about the underlying reasons, at least for now, because, for the most part, kids don't often understand them themselves. The most important two things I've learned about this is that distraction works well and that if they are given a way to cool down, which is the actual idea behind a "time out", or can find a way to physically express their anger appropriately (my son refused to beat up a pillow when I suggested it [don't know why], but was perfectly happy to hit a heavy bag I have, especially after I demonstrated), then they are more receptive to any kind of intellectual exchange, especially pointing out that hitting hurts and, "Do you like it when people hit you?".
Also, consider eliciting the help of your pediatrician or a child psychologist if nothing seems to work.
My boy is now seven and this is rarely an issue anymore, although it has come up a couple of times a year.
Good luck in this.