I linked to Craig's blog when he started but he has had a series of CRACKING posts on joins. I highly recomend reading the summary post, lots of good stuff in here and its readable and written for humans.

The SQL Server QP team are scary smart and have some of the most dense code in SQL Server but sometimes the insight needed to write good SQL doesn't cross the barrier from geek speak to human speak, hence I'm a real fan of this type of post.