You screwed this one up big time. There was nothing wrong with your intentions, but your execution was absolutely terrible. Based on your boyfriend's response, you probably said something like this:
"Oh my god. Wow... Sweetie, I have three years left of grad school. I can't get married until after that. You know how important my Masters is."
Entirely logical, of course. You made it very clear that your intentions are to finish something that you started because it is essential to your future plans. But when a guy decides to get down on his knee to boldly proclaim his love, he doesn't want to be met with cold logic and a request to wait.
Hindsight being 20/20, I would've recommended something like this (assuming you wanted to marry him, of course):
"Yes! Oh my god! Yes! Wow, I can't believe it. I'm so happy. But sweetie, just so you know, it might have to be a little while. We should probably hold off on starting to plan the wedding until I get closer to graduation."
The second you say "Yes," you're his fiance. That's what he wanted. He didn't necessarily need to marry you in the next six months. Guys are very, very able to stand a long engagement. He just wanted to put a ring on your finger. You could've dictated the time frame, and he would've understood. Instead, he's lashing out because he didn't get the "yes" and tears of joy he was hoping for.
My advice - finish your Masters. That's the most important thing, so don't feel guilty about it. Don't stop taking classes to plan a wedding. If you want to marry him, say "yes," wear the ring, and call him your fiance. Then, gently, tell him that you've got a few more classes and he needs to be patient. If you don't want to marry him (perhaps this outburst has gotten you thinking about your future with him), then tell him that you don't want to marry him. Either way, be clear. You can't undo the hurt feelings, but you can tell your boyfriend, or soon-to-be-fiance, what your plan is and how he fits into it.