Have you tried reading him "hands are not for hitting." In the same series there is a book on anger. That might help too. Check your local library.
I'd also encourage doing roll playing with him. I find with my daughter that if I give her the words to say in certain situations, and do some roll playing with her, she is better able to use her words, not her body. She's really good at saying "please don't push." When she was testing out physical behavior, prior to playdates I'd do some roll playing and tell my daughter that if I saw her engage in whatever the negative behavior was, we'd have to leave --making it clear that there is a zero tolerance policy for physical behavior. I also explain to her all the time about how other people don't like selfish or rude people, etc. and how she won't have any friends if she isn't nice.
There is a great Winnie the pooh book on sharing I read my daughter all the time too --can't recall the name. I also read her a critter book called "it's mine," letting her know it's OK to be hurt by having to share things.
If I was you, I'd stay away from playdates for a week or two. See if you can't break the cycle. Read him some modeling positive behavior, etc. and then reintroduce him to playgroups. I'd also switch up the kids he is playing with. It might be a personality thing as well. I don't let my daughter near this one boy in playgroup (he's a biter and my daughter just doesn't like him).
The most important thing, I think, it removing him from the situation when he engages in the behavior. Instead of TOs, leave. Make it clear that the behavior is not going to be tolerated, period, but tell him what he can do instead when X happens, etc. Give him the words to use instead of him having to rely on his body. Right now the physical behavior is obviously working, or else he wouldn't keep doing it. So you need to make sure it isn't reinforced.