Talk to him about him and ask him what his thoughts are. You seem so caught up with your own expectations that you've ignored that he's in this relationship too (other than the offhand comment about buying hte cow, which is insulting to both of you to begin with). Let him talk about his feelings openly. If he has concerns, don't get defensive, allow him to voice them and talk to him about them.
Well, you're already expecting to get married...so what's the surprise that'd be ruined? When he'll do it? Then, once you've got it all sorted out, tell him to surprise you about when he'll ask you. If I could privately tell him something, I'd tell him to wait at least two-three months until you're not expecting it so much anymore.
Or, just surprise him by asking him to marry you! I bet that'd be a surprise to both of you!
Good luck!
Edit: Basically what Erin said. Great minds think alike?