I'm using Io in a serious project, it is the scripting language I chose to use for my games. Io's expressiveness and reflection has allowed me to make lots of mini-DSLs to simplify game scripting tasks. I'm very happy with the performance of its garbage collector; it's pauseless and I have profiled it as using only 10% of the cpu time while running a game. I think the vm code has been stable for some time now and the move to cmake cleaned up the build process. The only disagreement I have is over coroutines - they do weird things to the stack and they dont play nicely with C++ exceptions if you throw one and let it cross a coroutine boundary. I've started a project to port Io l's C code to C++ and replace the coroutines implementation. Most of my projects on github are related to Io in some way: http://github.com/dennisferron
I think Io is one of the most inventive languages I played with in a few years. Lots of interesting ideas and as _why said "it has a very clean mirror" that give you special powers.
I wouldn't recommend it if you want to get something done. It is an interesting way to explore the set of features they have chosen for the language(Prototype based OO, meassage passing, code easily modifiable at runtime). The point of the language seems to be more art than tool:
Io's purpose is to refocus attention on expressiveness by exploring higher level dynamic programming features with greater levels of runtime flexibility and simplified programming syntax and semantics.