I have to agree with Reid and Junilu.
Additionally, I don't care much about the reusability problems of (anonymous) inner classes. After all, if I later feel the need to reuse (parts of) it, I am able to refactor to my needs. Good refactoring browsers even provide automatic refactorings like "anonymous to named inner class" (IntelliJ IDEA for example, feature request for Eclipse is posted
).
So I often use anonymous inner classes especially when developing test-first, following the mantra of "make it run, make it right, make it fast". Anonymous inner classes are often the easiest way to "get to green".
Additionally I use anonymous inner classes where you would use blocks in Smalltalk - sadly they are very verbose in comparison to blocks...
I also use AICs for simple State/Strategy implementations, along the lines of