Read this one:
http://codeofdoom.com/wordpress/2009/02/12/learn-this-when-to-use-an-abstract-class-and-an-interface/[
^].
But let's see a real-life example:
I am using specialized controllers in an MVC project. These controllers are plugins, thus they have to be contracted via an interface. Thus I have defined a contract interface. But there are common tasks all these controllers have to do, thus I have made an abstract class, that implements this interface with some if the interface methods coded for real, but not all, they remain methods. This class can not be instantiated, but can be extended by the concrete controllers.