Well after having a look around for answers, I found out what is causing it. There is a setting in bf2 to compensate for latency timings. This is usualy automatically set based on your ping when you first play the game, after an install, or patch or whatever. However after installing the 1.3 patch, there is a known issue where this latency compensation isn't automatically set, which results in random high ping and connection losses.
To fix this, go into a bf2 game, open the console (press the key below "ESC") and type the following:
SettingsManager.floatSet GSDefaultLatencyCompensation 0.1
the value at the end, 0.1, is equivalent to 100ms. Change this to reflect your normal ping so for example 0.04 (40ms) would be a more appropriate value. This will also improve overall gameplay and your shots will seem more accurate, especially with m95. After doing this, my game was completely fine, even better than before really...no lag whatsoever...
Ive done it and it works.