When playing the video, youtube begins playing the video before it has fully downloaded. If as has been said, the next few seconds of the video cannot be downloaded then you have to wait until it is available. Buffering attempts to mitigate this, by trying to always have a few seconds of video, ahead of the bit you are currently watching stored in memory, so that any latency (delay in receiving data) can be smoothed out, however depending on various factors this is not always possible, and hence the vid stops whilst the browser attempts to retrieve the next bit.
A 2Mb connection would be fine, if you were downloading a 2Mb/s but due to a whole load of factors, network latency, number of hits on that particular vid, contention (the number of broadband users on your bit of string), the real download rate will often be significantly lower. In other words you could have a 100mb broadband link and still get the same problems.