Question: When should I use dependency properties in WPF?

They are static, so we save a lot on memory, compared to using .NET properties.
Other gains of using dependency properties over .NET properties are:
1) no need to check thread access
2) prompt a containing element to be rendered
etc...

So it seems I should ALWAYS use dependency properties in my projects where I use WPF?

Maybe for some trivial properties of helper classes here and there I could
get away with .NET properties...

Answer: 
The main reason to create `DependencyProperty` is when you write you own WPF control.
`DependencyProperties` can be used as binding source and target, and can be animated.
The properties of all framework's controls are implemented as `DependencyProperty`, that why you can make powerful data binding in XAML.

However in most situation, like in with the MVVM pattern, you don't need dependency properties, `INotifyPropertyChanged` is enough.
Perhaps you should take another look at the [Dependency Properties Overview](http://msdn.microsoft.com/en-us/library/ms752914.aspx) page at MSDN. 

Personally, I would only ever create a `DependencyProperty` when I really *need* to. For the most part, I use normal CLR properties in data type and view model classes to bind to... this is absolutely fine, as long as I implement the `INotifyPropertyChanged` interface.

So for all of my usual data bindings, I use normal CLR properties. I *only* declare a `Dependency Property` in order to provide some added functionality in a `UserControl`.