The best way to fix it is to go cold turkey, be strong, and don't give in, no matter how exhausting it is. In about a week or two, your son will learn to comfort himself when he wakes and get himself to sleep. You may want to buy him a special blanket or stuffed animal that he can use to comfort himself. Start on the weekend so you can afford to lose sleep, prepare yourself for some rough, sleepless nights, take turns getting up with your spouse, and stick to your guns. You will get through this.
I would start by explaining to him that he's a big boy now, and big boys sleep all by themselves through the night. (It wouldn't hurt to also explain to him that he's keeping you awake so he learns that his actions have an affect on others.) In order to pursuede him to sleep alone all night, you may want to offer him a reward that he'll receive in the morning for sleeping in his bed all night. It could be a toy, or letting him help fix pancakes in the morning, or anything that will work for your child. Give him a flashlight to take to bed. Batteries are cheap compared to losing sleep. He can play with it until he falls asleep, and will have it available if he wakes up in the middle of the night. He may even enjoy looking at his books by himself with his flashlight before bed, which should make him sleepy, and will help wean him from falling asleep with you in his bed. Give him a designated spot to find his flashlight in the middle of the night, that way you can slip in to turn it off before going to bed.
Another suggestion, and I don't believe this is the solution for everyone, but I've heard of people giving their children a little Benadryl before bed to help them get back into a normal sleeping pattern. It's something you could try for the first two or three nights, until you feel he's getting on track.
I hope this helps. Good luck and hang in there!