Как вариант, считаете отступ последнего блока от верха, прибавляете к нему высоту блока. Сравниваете при scroll с scrollTop и если больше или равно - задаете класс нужному блоку с position:fixed. Не забывая при этом, что если блок вытаскивается из потока, его надо заменить margin-top следующего за ним блока на величину, равную высоте блока.
Соответственно, при определенном scrollTop надо его скрывать, чтобы он не залез на футер. Можно сделать просто, если блок не большой высоты, то просто следить, чтобы scrollTop не был равен scrollHeight.
Все это можно написать за 10 минут, если у Вас есть знания.