Castle is currently my preferred option of the above as I find it easy to use and config, and when needed it has a couple of bonus features.
However there is another kid on the block, which I felt was probably coming.
You see most of the useable IoC container have a fair bit of bloat. Most of the time I just want to be able to say something like:
IFoo foo = Container.GetInstance
That is it, Really! I don't care about all of the other stuff that goes on, I basically just want a glorified factory that can handle constructor and setter injection. 80% of the time, that is all I care about.
It just seems to be odd to have a huge framework hanging around, especially on smaller projects just to aid in loose coupling.
Well I guess there are others thinking the same thing, enter Ninject.
Light weight, simple syntax, no bloat and apparently pretty fast.
Check it out if you want DI without all the bells and whistles that you will probably never use.