Я изменил ваш код выше, чтобы он работал плавно и не плавал над элементом остановки. Также был улучшен стиль кода.
var menu = "#menu",
stop = '#stop';
$(function(){
var $menu = $(menu),
$stop = $(stop),
baseOffset = $menu.offset().top,
stopOffset = $stop.offset().top;
$(window).scroll(function () {
var newOffset = baseOffset + $(document).scrollTop();
if($menu.offset().top < stopOffset || newOffset < stopOffset)
{
if (newOffset > stopOffset){
newOffset = stopOffset;
}
$menu.animate({top:newOffset},{duration:300,queue:false});
}
});
});
http://jsfiddle.net/xaYTt/372/