First off, I'd say you could have played for more of an advantage in the opening. It seems that at move 6 a little better would have been Nc3xd5 or Bd3xf5. Your opponent gave back some advantage at move 7 by not playing Nf6-e4 or a6. After this passive move by black's queen, 8. bxf5 is still a good idea. After 12 moves, things are about equal and here's where 13. 0-0-0 might have been good. 16.Ne5+ would've been productive because he must retreat his king or else your attack get's rolling via 16. Ne5+ Bxe5 17. d4xe5 Nf6-h7 18. Nc3-(b5 or xd5) or even 18.f4.
18.Nc3xe4 would have been better of course. Your opponent could have played 19...Nb4xd5 for a larger gain. 22. Rh1-g1 is preferred. 23. Rd4 was critical, and the move you played really let your opponent secure a win. 26. Qd5 would also have been preferable. After 26.c2-c3 with best play it is now mate in 7. 28. Q-c4 would have dragged things out longer (mate in 6). Hope some of those ramblings make sense. I would say the general lesson is don't allow your opponent to build up strong forces so close to your king. Good luck!
Heres a game I recently played. I am not sure why I lost. I only made two blunders.