P.P.
This is probably not going to be a very helpful post but I have a 3 year old who I still rock for a couple of minutes before he goes to bed. We call it "rock-a-bye time". I did the same with my 5 year old until he was about 3.5 and decided he didn't want to rock anymore. We all go up to my room, the kids sit on the bed and I read them a couple of books. Then the 5 year old lays down on my bed while I rock the 3 year old for a few minutes. After that, both of them go to bed and I lay down with the 5 year old so that he gets his cuddle time too. I wouldn't miss those night time cuddles for anything.
I never let my kids cry themselves to sleep. I was never able to do that. But you have to do what you think will work. No one has the answer on how to get a child to magically go to sleep on demand. The kids get older, start playing harder and harder, and soon, they are falling asleep on their own with no problem. How often do you see a Mammasource request asking how to get their 4 year old to sleep through the night or got to sleep without a bottle? But for now, you have to do what you feel comfortable with. If that means continuing to rock your son to sleep, there's nothing wrong with that. If it means letting him cry himself to sleep until he stops crying, there's nothing wrong with that either.
Believe me, before you know it, your son will be starting kindergarten and you'll have moments where you really miss those rocking times.