E.C.
It's not called the "terrible twos" for nothing. He actually sounds pretty tame compared with what I went through with my little one, who is now 3. My daughter would shriek and cry all the way home, run away into the street constantly and ignore everything I said too.
She threw stuff; I often dragged her kicking and crying from places like the park, Chuck E. Cheese, supermarkets, you name it. I actually dreaded taking her out anywhere, and forget about restaurants altogether. But then she suddenly became 3, and is superangelic, a real little companion.
My theory is that they are caught between thinking they are the masters of their universe and have more awareness of the world and are excited by everything in it, but they lack the communication skills to tell you what they want, or the comprehension to fully grasp what you want from them.
I think you are basically doing well with it by keeping your commands very basic, offering him simple choices with consistent repercussions. I remember trying to get my daughter to do time out for two minutes and having to constantly place her back in the time out spot.
Good luck, you don't have far to go...