Apparently when you launch the camera application on your iPhone 3GS, data is not just streaming to the viewer but also being cached to the memory at full resolution, a bit like TiVo with live broadcasts reports theiphoneblog.
Apparently in previous versions of the iPhone hardware software there has been latency due to processing limitations and said limitations have now been sorted out in the iPhone 3GS.
Basically what happens now is the iPhone constantly stores the image you require before you even snap it. The iPhone 3GS now closes the gap by processing the stream from a millisecond before the shutter is released.