Good checkmate. Your opponent could have got away with his king to d8, though. Moving to h8 was fatal. And cos he had an extra piece, he should have used it better.
19 Nh4? gxh4! 20. Qxh6 Rf7 holds everything. though the kingside has open white has limited piece to give checkmate. white pieces also are harder to maneuver in the kingside compared to black's king. he should have won this game.
I agree with greyfox , he should have taken the knight : Here are 2 main variations (19... gxh4 20. Qxh6 Rf7 21. Be4 (21. Qg6+ Rg7 22. Qe4 ) 21... Qd8 ) and white is losing in both by over 4 pawns .