IoC is intended to hide the inner plumbings but as your code grows you start to lose track of what your code actually does.
In a perfect world where no developer makes mistakes and all analysis and code are fully synchronized it could work. But the hard reality is that you lose a way to step by step go through the code and actually understands and test it.
Then people tell me that unit tests will save your ass, but the hard reality is that it doesn't. It actually contributes to a more complex system that will make your code more and more buggy.