With slightly different concepts of “self-hosting”:
Compilers (if the compiler can compile itself e.g. gcc, GHC, many others)
Operating systems (either in terms of development of the OS, or virtual machines run on the OS)
Build tools (e.g. make, autoconf etc.)
Testing libraries and tools
Debuggers
Bug tracking tools (e.g. Trac)
Editors and IDEs (if you use the editor/IDE to develop itself)
File distribution servers (e.g. web server, bittorrent client/server, which can be used to distribute themselves.)
Grammar definition languages (e.g. BNF, which can be described in BNF)
Package management tools (apt, Cabal etc)
Documentation tools (e.g. Sphinx)
Manufacture of robot parts
An item in a list that depends on self-reference to be properly understood, like this one :-)
I'm struggling to define this concept exactly. A common thread with all of them is that there will be some kind of boot-strapping problem before maturity is reached. Also, most of these things can be classified more simply as “software development tools” – due to the fact that most software development tools are software, there is the possibility of this kind of “recursion”.
Are there other things in this category that I haven't thought of? Are there lots of areas of life outside the software world where this is common?