18...Bxc3, 19...Nxg7, 20...f6, in effect anything which didn't allow the pin on the knight would have probably been good enough. From then he was just able to weaken your pawn structure too much around your king and bring too many threats.
How should the weakness have been exploited

9...Nxc5 is questionable, because then White can play 10.c5 and Bb2 and it looks like he has a very very small advantage.
At moves 13 and 14 you miss the obvious ...Nxg5. If 15.Bd2 ! you do not get the free piece White gave you at the previous moves.
20...Ne5 ?? runs into a pin. Either 20...Nf6 when White has not f4 to win the piece, or 20...Kg8, were good enough to win witout any trouble. Yet, 21.Bxc4 ? (20.f4 !) fails to exploit it correctly : 21...Kg8 ! and Black remains winning.
40...Nd7 is double-edged, when ...Rd7 followed by ...Qh6 (with the idea if f3 then ...Qf4) gives trouble only to White.
After 44.f3 you rushed to check as fast as you can, but you could think a bit instead. 44...Qb2 already gives White a serious headache. 46...Qxb4 eliminates the dangerous pawn while keeping threats (and the counterattack Rg7+ Kf6 Qf7+ Ke5 is nothing to be afraid of).
Hi analysers it seems i missed some forcing in late-middlegame. Any mate i missed or perhaps was there even a way to put the H file to use? I know i missed ...fxe6 (would have prevented knight to hang) and i am working on my laziness to calculate. How to stop white's b pawN?