This is the title of an awesome talk that Chris Richardson gave at the Spring One 2007 conference in Antwerp. You can watch this session online. He gives a really nice introduction to domain-driven design and also discusses some code smells and their corresponding refactoring solutions along the way. Although the used programming language is Java, the content is applicable to multiple programming languages and environments including .NET.
I believe that we have a huge lack of these kinds of sessions in the .NET world (except for the ALT.NET conference). The content of this talk is essential for every developer, analyst, project manager, etc. ... out there. So, what are you still doing here reading my crap? Go watch this stuff!