Do you know how to use the tortoise-and-hare algorithm? If so, after your algorithm completes, your tortoise will be at the middle of the list.
If you're really stuck, I have a working implementation. Or, here's some pseudocode-like thing:
(define (median lst)
(if (null? lst) #f ;; oops, empty list
(let loop ((tortoise <???>)
(hare <???>))
(cond ((eq? tortoise hare) #f) ;; oops, circular list
((null? hare) <???>) ;; median value here
((null? (cdr hare)) <???>) ;; average of middle two elements
(else (loop <???> <???>)))))) ;; keep going