Oh, so we came up with a good method after MUCH trouble with sleep -- I think it's best to use a pushing and pulling kind of method, in other words, really make him WANT to be in his bed, and also really make him stay there. So, when you go buy new sheets (with Thomas the tank engine or something equally wonderful), pretend for all the world that you really want those sheets. Put them on his bed, but keep lying down in them, getting all cozy. Tell him that these are the coziest sheets in the house, and pretend not to want to let him sleep in his bed. YOU want them. Even daddy can help out with this act, and pretend he wants them too. When he is ready to climb into bed and try them out himself, be SO reluctant to get up out of them. You get the picture. :) Add this to the bedtime routine, where you pretend you want to be in his cozy, cozy sheets every night.
Then add the no-tolerance no getting out of bed (except for potty), with closing the door tight (or taking a pillow for a second or two) for longer and longer with each infraction. Plus starting bedtime at DARK and QUIET, when he's physically exhausted, and you've got yourself a bedtime!
Whatever you do, don't let him change the bedtime routine for you -- in other words, whatever you "let him get away with" one night will be the new norm and what he expects every night.