Dino Esposito presents a nice looking overview of this in his ASP.NET Home: Crash Course on Control Development: Deriving New Controls from Existing Classes.