Basically you should test your app on the target-os and on the latest one, so if your app's deployment target is set to 3.0 you should test on a 3.0 device and on a 4.0 device.
From my experience I can tell that stuff programmed towards 3.0 usually works well on 4.0 (expeptions are AV related things, and probably other things as well, I had to rewrite my movieplayback controls to work on both os')
also check for methods that arn't available on os 3.0 (or whichever version you're targeting). I have a lot of respondsToSelector....
calls in my code which make it look very ugly but I guess it's somewhat necessary.
Memory Leaks on the other hand won't be different between OS's as far as I'm concerned...
When I develop for multiple targets I usually test with the weakest/oldest one from beginning on, rather to ensure satisfying performance than stability.
Hope my tipps help you out.
cheers
sam