A., this schedule is exactly our son's schedule (or was until recently, with an additional 4am wakeup). Rowan is in bed at 6:30pm or so each night, and is now waking at 6:45am. The difference? A couple of things...
1. I think there were a couple of nights that we didn't hear him at 4am and 5am because the monitor was too low and we were too exhausted. He must have gone back to sleep on his own. I think this was the start of the change. (By the way, he awoke perfectly happy).
2. We began putting him down in his crib awake and leaving the room (we knew he could self-sooth - he'd done it many times in the past, but was recently hooked on us staying in the room until he fell asleep). This was tough to do. He cried 1.5 hours the first night, 45 minutes the second night and about 15 the next couple nights. Then it was just a couple of minutes and he laid down to sleep on his own. Ever since the first night, he began sleeping all night until 6:45am. No wakeups!
I'm not sure if you are putting him to sleep or allowing him to fall asleep on his own without you. If you are in the room with him to fall asleep, you might consider making that change. It is tough. I've always been set against cry-it-out, but when it comes to him and us needing sleep, and me knowing he was just mad and not needing something, I was able to stand my ground.
I hope this helps you!