I think I can shed some light on this, since I've just come across the same issue...
In my particular case it was due to the inclusion of the Cyclone Slider 2 extension, which uses Malsup's jQuery Cycle2 plugin. Both the Cycle plugin (also by Malsup) and the Cycle2 plugin declare jQuery.fn.cycle(), so whichever one of NextGen or Cyclone Slider 2 gets initialised latest is going to govern which $.fn.cycle() ends up being used, Cycle or Cycle2. In my case, Cyclone Slider 2 comes in second, so Cycle2 gets into $.fn.cycle(), and the APIs for Cycle2 and Cycle are quite different. So, when NextGen slideshow tries use Cycle2 as if it where Cycle, it doesn't work! It initialises and does the basics as expected, but there is no 'before' option or 'addSlide' method (among other things) available in Cycle2 ... which is how NextGen's slideshow expects to be able to load any slides beyond the first 3.
One work around is to enable the Flash slideshow in NextGen, and use that instead of the default jQuery Cycle mechanism.
Another option (in my case) is to use Cyclone Slider 2 to show the NextGen gallery, instead of using NextGen itself?
As for a more permanent solution?
Hmmm ... I guess that one way might be for NextGen to update its slideshow to use Cycle2 instead of Cycle. However, that won't remove the possibility of further conflicts between extensions that use Cycle and extensions that use Cycle2!