Our daughter displayed many of the same behaviors your cite and we had to resort to having one parent hold her while the other brushed her teeth properly. What we found helpful, though, was to have the parent brushing the teeth to say the vowels aloud - Aaaaaa, Eeeeeeeeee, Iiiiiiiiiii, Ooooooooooo, Uuuuuuuuuuu, and sometimes Yyyyyyyyyyyyyy - and to encourage her to say them.
After a few times, she lessened her resistance. Our thought was that she understood that when the vowels ended, the brushing would end, giving her a cue as to how long the session would last and how close it was to ending. It also gave her something to do. Not long after she started saying the vowel sounds, too, which further distracted her and made brushing easier for everyone involved.
Another thing to try is to have another parent brush his or her teeth at the same time. Let your son see that brushing teeth is something his parents do, as well. Children are naturally interested in imitating the behaviors of their parents.
If none of the above work, try compromising by letting your son brush his own teeth himself after you brush them. (This works particularly well if he's at that stage where he wants to do everything himself.) In short, you explain that you will brush his teeth - Aaaaaa, Eeeeeeeeee, Iiiiiiiiiii, Ooooooooooo, Uuuuuuuuuuu, and sometimes Yyyyyyyyyyyyyy - and afterwards he can hold the brush and brush them himself.
Good luck!