Allright, I found a pretty nice Article on IoC (Inversion of Control)
Understanding IoC Container
[EDIT:]
Also, I have found one way to replace an existing Service with my own code. However I am not sure this is the simplest way.
1. Implement your own Service, subclassing the existing one, and overriding the Methods you need.
2. Write your own IDependancyResolver implementation. It could be a Subclass of UnityDependancyResolver with your own Service registered in ConfigureContainer().
3. Find "dependencyResolverTypeName" in web.config and set the value to your own DependancyResolver.
This way, after an Upgrade all you have to do is put your own DependancyResolver into web.config and eventually adjust the overriden Methods if needed.
This method allows you to override existing Methods, but not to add new ones since the Interface is still unchanged.
Retroviz mentioned using decorator pattern to solve that problem, but I am not sure how to insert that code in the nopCommerce painlessly.
[EDIT2:]
Sometimes I can be such a dummy! Extending the existing services with new methods is actually very easy. Interfaces are partial! Add a new part of the interface, and implement the new methods in another part of the service class. Voilà!
P.S. I hope this method isn't going to change a lot with MVC.