You're on the right track. stay firm on the bedtime routine, perhaps let him negotiate the number of minutes you will stay. Giving him the "power" to decide may help him feel in control. As for the middle of the night stuff. Our rule was, we went back to the room with the child, addressed the issue (comfort for nightmare, bathroom trip if needed, sip of water if thirsty. etc.) then they had mom or dad for no more than 5 minutes. If there is no excuse for waking, then strait back to bed. The key is to make no big production over it. If he wakes at ta certain time each night and you are desparate, try putting a clock in the room. tell him you will come to check on him at "11:30" (about 15 minute before the ususal wake up time). Do so. give a kiss and leave. When he wakes, you were just there. send him back, no production again.
One other thought, sleep issues in our house always erupted during my 3rd trimester of the next pregnancy. We resolved that it was a way for the soon to be displaced youngest, to be reassured that we would tend to him/her too. With my son, who was 3 during my pregnancy, I appealed to his chivalrous nature. He began to take ME to bed, tuck me in to get rest, then he went peacefully to bed on his own.
Good luck and blessings.