Hi S.: I will add a few things to the advice you are getting. Your experience is pretty standard 2-4+ year old behavior. Yes, even into the 4s! Your son will go through stages where he tests your rules/limits and pushes the boundaries to exert his own independence and control. My daughter did the same. For months she would do wonderfully at bedtime with a similar routine (except we have no music in the room). Then she'd be a completely different child for no reason we could ascertain. They're just growing up! By the way, my daughter is now 4.5 and she still naps ~1.5 hrs every afternoon and still goes to bed with lights out no later than 8:30pm. So, it's not a napping issue necessarily (depends on child). Remember they need 11-12 hrs of sleep daily. So if your son isn't napping, then earlier bedtime may be in order. If you have not read the book "Healthy Sleep Habits, Happy Child" by Weissbluth, you should check it out at your local library.
So, here is some of my advice to add to what you received:
1. Getting up constantly is an attention seeking action as well as independence/control, so we made sure that our evening routine included some quality family time. What we do is have dinner around 6pm, and then it is family game time - nothing physically active - just card games, board games or puppet show kind of stuff, that she enjoys for about 45 minutes (depending on the time we're done with dinner and clean-up). We all sit down on the living room floor together and focus only on that - being together, playing together, having fun. NO TV either - it is a stimulant (one of the first things docs will say is to make sure your child is not watching TV close to bedtime).
2. Figure out what motivates him - what can you reward him with for staying in his room? What can you take away if he continues to come out? Remember, you cannot make a child sleep, but you can expect him to stay in his room. Reward him for staying in his room (we would give her a ball for each good behavior which she put in a jar and after 5 balls she got a little something special). Also, if he does stay in his room and doesn't sleep/stay in his bed, that's actually OK. Your goal is to get him to stop coming in and out and to stop making it a battle every night. Let him play quietly in his room if that's what it takes. Don't make it a battle. He'll put himself to bed on his own terms and feel empowered by it. You will have some nights that he's got the light on late, but you both have "won" so to speak. Put aside your concern that he's not sleeping earlier, that won't last.
3. At about 2.5 we instituted House Rules. We have a list of about 10 imtes that we wrote together with our daughter (that part is key) in big letters on construction paper and put on the wall in the kitchen area (anywhere obvious). At that age our rules included things like: No Hitting or Kicking, No Means No. No Whining. Be Helpful. Stay In Bed at Bedtime. Clean Up Toys. Respect Eachother. It was fun to do with her because she was really interested in adding rules! So cute. We of course edited the list to the ones we felt were most important/appropriate. We would refer to the House Rules when needed and it worked well (break a rule, get a warning, or go to naughty spot if not heading warnings or if hitting for example). By the way, we did tell our daughter that the only reason she is allowed to come out of her room at night is if she has to go potty. But if there's no potty (she's pretending), we would take away one of her balls from her reward jar.
4. Also, you may find success with Supernanny's stay-in-bed technique. We had mixed results (and we're awfully determined folks!). We struggled because our daughter turned it into a game and it jazzed her up spiraling into a multi-hour ordeal and a trial of patience. She's strong willed and stubborn as they come it seems! With a 6 month old to care for as well, you need to rest, so if it works go for it, but if it is getting too hard, try the other advice.
Remember nothing works like magic in one try or one night. Pick an approach and stick to it for about 3 days minimum to give it a chance to work. And don't reward negative or attention seeking behavior in any way (e.g.,tantrums, wall kicking, etc.) Ignore...ignore...ignore. Don't let him get a rise out of you. Just return him calmly to his room and repeat your expectations. Good luck. It is HARD to get through these litte stages, but you'll become a pro soon enough!