Here's the thing, we are born selfish creatures, we have to be to survive. Problem is we are not born with empathy. It is taught. So now your job is to teach him empathy and what pain means. It's time to put your acting hat on. When he hurts you, you cry, be really sad, be really hurt (not in a funny way), act the way he acts when he's hurt. Tell him "YOU HURT ME", and then when your done, make him apologise, give you hug, and even kiss your boo boo. Then when he is hurt, model that same behavior back to him, hug him, say "OH ARE YOU HURT, I'M SO SORRY". Now he will continue to do it for maybe a week or two, as his brain is taking it all in and his short term memory puts it into long term memory.
There is no person that likes pain and he doesn't like pain. If you are consistent (and get everyone in the house to do just what you are doing) you can teach him that he is causes pain, like the pain he gets when he falls etc. and he'll stop.
Good Luck, I did it this both of mine (2 and 4 years old) and it worked wonders. (I read it in some book somewhere)
Also make sure you reward him and show some positive attention when he is doing something good like helping you pick up toys.