If you start down the DI route, you'll pretty soon have constrictors that take 20 parameters for the various dependencies that object needs. Getting those 20 parameters will require getting 20 other parameters to construct them. And, then, at the end (beginning?) of it all, you'll realize that you just coupled yourself to a concrete implementation of your carefully considered interface (by calling the constructor). And then, 6 months later, you'll add a new dependency, which requires you to backtrack through all existing calls and change them as well.
A DI framework basically takes care of that plumbing for you. By standing between you and the constructor, it can interrogate config (maybe XML, maybe code) that tells it what to do when it needs a concrete object.
The basics are pretty easy with any language that has some sort of introspection (register a concrete type to satisfy an interface, when you need an instance of an interface then instantiate the type. Walk the graph created by the constructor and repeat.) where it gets complicated is when you also want to control object lifetimes (this Logger class should only be instantiated once, and then reused. This DataAccessFacade should be instantiated once per thread, etc.) or dynamically choose how to satisfy a dependency. A DI framework will normally provide both object creation facilities (figure out the dependencies required for the constructor) as well as a Service Locator facility so that not everything has to be passed in the constructor or as a parameter to methods. That allows you to register types with arbitrarily complex constructors, get an instance of it, and not have to worry about when or how to share an instance, when its constructed, when its destroyed, or be coupled to the actual type.
Desiging libraries using DI also allows users to swap out dependencies when needed - which gives a great deal of flexibility when combined with interfaces or inheritance without otherwise cluttering your code with constructor or method arguments for every dependency.