What's a good example of a static factory method returning instances of subclasses?
I don't have a good answer to this. However here are my thoughts.
Named constructors
A good use for static factory, is to implement named constructors: Java, C#, C++, et al do not have named constructors. However named constructors can be useful, as they allow you to document different ways of constructing an object. Therefore use a static factory, to create the object. The static factory will use private un-named constructors.
Problems with the pattern
However other uses of static factory seem to be an anti-pattern.
You now have a super-class depend on the sub-class. The sub-class already depends on the super-class.
The static constructor can also easily break the single responsibility principle: the class is a thing and a factory for a thing.