Even though dependency injection is a better understood concept now than in the past, there is still code being written that does not keep the principle in mind. The problem seems to be around recognizing which dependencies are needed when constructing the object and which ones need resolution at runtime.
Recently we ran into a problem with unit testing a piece of C# code because of the way the objects were created within the class under test. We were using Castle Windsor to inject the dependencies already but this particular situation was troublesome for us.
The amount of inertia that we build over a period of time is simply astonishing. The human brain likes to settle to a certain rhythm unless we consciously keep pushing it. With our current lifestyles, it is so easy to break the pattern and be lazy about things which we ought to do.