Honestly I don't find there to be many cases where IoC containers are needed, and most of the time, they just add unneeded complexity.
If you are using it just for making construction of an object simpler, I'd have to ask, are you instantiating this object in more than one location? Would a singleton not suit your needs? Are you changing the configuration at runtime? (Switching data source types, etc).
If yes, then you might need an IoC container. If not, then you're just moving the initialization away from where the developer can easily see it.
Who said that an interface is better than inheritance anyway? Say you're testing a Service. Why not use constructor DI, and create mocks of the dependencies using inheritance? Most services I use only have a few dependencies. Doing unit testing this way prevents maintaining a ton of useless interfaces and means you don't have to use Resharper to quickly find the declaration of a method.
I believe that for most implementations, saying that IoC Containers remove unneeded code is a myth.
First, there's setting up the container in the first place. Then you still have to define each object that needs to be initialized. So you don't save code in initialization, you move it (unless your object is used more than once. Is it better as a Singleton?). Then, for each object you've initialized in this way, you have to create and maintain an interface.
Anyone have any thoughts on this?