Во-первых, реализация тут будет несколько отличаться в зависимости от верстки, а конкретно, если наш внешний блок имеет position == absolute || relative || fixed то задаем нашему листу position: absolute и работаем с его свойством top, в ином случае придется работать с свойством margin-top, что медленнее в отрисовке.
Собственно по реализации:
я допущу, что у Вас уже сохранен jQuery объект списка в переменной $list, что работаем мы все таки со свойством top и у Вас уже где-то есть таймер в котором это свойство top уменьшается, вот туда нужно будет добавить следующий код:
var $li = $list.find('li:eq(0)');
var h = $li.height();
var top = +$list.css('top');
if(top < -2 * h) { //если список поднялся больше чем на 2 высоты 1 элемента
$li.remove().appendTo($list); //перемещаем элемент в конец списка
$list.css('top', (top + h) + 'px'); //опускаем список на высоту элемента,
//так как мы его убрали вначале
}