There are plenty of killer features in Lisp, but macros is one I love particularily, because there's not really a barrier anymore between what the language defines and what I define. For example, Common Lisp doesn't have a while construct. I once implemented it in my head, while walking. It's straightforward and clean:
(defmacro while (condition &body body)
`(if ,condition
(progn
,@body
(do nil ((not ,condition))
,@body))))
Et voilà! You just extended the Common Lisp language with a new fundamental construct. You can now do:
(let ((foo 5))
(while (not (zerop (decf foo)))
(format t "still not zero: ~a~%" foo)))
Which would print:
still not zero: 4
still not zero: 3
still not zero: 2
still not zero: 1
Doing that in any non-Lisp language is left as an exercise for the reader...