LEt me first start by saying, what you don't fix now will be harder to fix the older he is! I have a 5 yr old and a 2 yr old, and we still hae issues with our 5 year old sleeping through the night. It was just always "easier" to let her sleep with us....wrong. The other bad habit is that she likes to have "snuggle time" with daddy in the evening on the couch, but has to completely asleep before you can move her to her own bed. She then wakes up and starts throwing a fit, which gets really old. On the other hand, my 2 yr old goes to bed super easy, all I say is time to go nite nite and we go to her room. I learned from our first child and did not want to repeat the situation. Even for nap time she goes to her bed awake and puts herself to sleep. She has neer known anything differently.
Our newest thing with our 5 yr old to break her from the "snuggle time" is she picks out 2 books for one of to read to her in her bed, that is her snuggle time and our total attention is focused on her. The deal is that if she crys and throws a fit, there will be no cartoons the following day, and it has worked. Our 2 yr old enjoys books as well and wants to do what big sister does, so she gets book time as well even though she will go to sleep on her own. She gets so excited about the books, that right after bath time she gets her book and hops into bed and yells for me to come read them.
Maybe you can do sometthing special like that so that he will enjoy going to his room and staying there. They are old enough to understand that they must stay in their room. We also close her door which she can't open yet, and she has a night lite.
I hope some of this helps!
A.