Иногда эти функции так легко написать, а решение настолько прозрачно, что читать бессмысленно, какая комбинация стандартных функций будет делать то, что вы хотите:
(defun elts-before (l elt &key (test #'eql))
(loop for e in l
until (funcall test e elt)
collect e))