I think you played well. 21.Ng4 and Rxd4 deserve exclams. I wouldn't have seen it much less had the courage to play it. 27.Qxh7 was understandable, since superficially it appeared to win (back) some material while maintaining the attack. With respect to f4, I would have made a similar move, I alway make the mistake of pushing beyond what a position permits.
I played this game at a strong tournament in AZ a few months ago. It was a tough loss for me as I got to hasty at the end and completely threw away a good game against a FM. Improvements? Comments? Critisisms?