You need to quote the "equal", otherwise you're trying to insert a procedure into the code, not a symbol:
(define-macro (pushnew item lst . test) (let ((== (gensym))) `(let ((,== ,(if (null? test) 'equal? (car test)))) (if (not (member ,item ,lst ,==)) (set! ,lst (cons ,item ,lst))))))
Brad