Thus, writing code that generates code, be it at runtime or at compile-time, is downright easy in Lisp. This opens up enormous possibilities not found in other languages.
Also, on regular programming languages, your code executes only at run time. In Lisp, or at least in Common Lisp (and probably on Scheme as well), there are three times: Read time, Compile time, and Run time, and your code can selectively run at one of those three. This also opens up lots of possibilities.
Another feature is that it is really suitable to interactive development in a way that isn't matched by any other language except for Smalltalk. It allows, for example, changing the definition of a function while your code is running.
Now, two features that are particular to some Lisps:
Scheme has continuations. Continuations are like magic teleportation within your code. They are very powerful.
Common Lisp has the Common Lisp Object System (CLOS), possibly the most powerful OOP system out there. It rocks!