Here are some comments:
I would have played 3.dxe5, since after fxe5, you have 4.Qh5+ when he can't play g6 due to Qxe5 winning the rook.
4.dxe5 would have also been my preference (maybe even 4.d5)
The whole 9.Qh5+ plan is bad, since 10.Nxg6 is a blunder, your opponent should have played 11...exf4 winning a piece.
16.Rae1 looks better, since then you can keep your rook on f1 to push f4.
I like 25.Bxg5 better than Ng3.
Would have played 28.dxc6 (ep) and then put pressure on the backwards d6 pawn. Once you let him close the position like he did, his king now is safe and well placed.
I don't really understand what you what was the plan behind 34.Ra1. 34.Rcf1 looks much better. The problem is that leaving our rook on f5 is fine as long as you can recapture with a piece, and right now you can't do that because you would lose the e4 pawn. Your opponent took a few moves to take advantage of this, but he finally found the move. (after 37...Rxf5 you are worse)
41.f6 leaves you with no hope, since the pawn is lost after that. Anyway, at this point you were already losing clearly, since your pieces are paralyzed and your opponent has 2 protected passed pawns. Your extra pawn is not a factor in this position at all.
Hope this helps.
I am quite new to chess, but have been getting better over the last couple of weeks. I recently played the following game which i believe i had the upper hand in at one point, but somehow managed to lose, can someone explain where i went wrong, and how i could have done things differently, Thanks