There is another pattern that is becoming popular, where basically you assign the event a null delegate to prevent it from ever being null. The primary purpose is to prevent a race condition in multiple threads.
public event PropertyChangedEventHandler PropertyChanged = delegate { };
With this change you no longer need to verify the PropertyChanged != null in the code that raises the event.
The Microsoft Prism team is using this in thier reference implementation...
http://www.codeplex.com/CompositeWPF/SourceControl/FileView.aspx?itemId=235252&changeSetId=14902
Here is a good blog article describing the pattern...
http://kristofverbiest.blogspot.com/2008/08/even-better-pattern-to-raise-events.html