You should make use of covariance for generic types introduced in C# 4.0. For this to work you need to use an interface instead of a class:
public interface IThingOwner<out ThingType> where ThingType : ThingBase { }
public class ThingOwner<ThingType> : IThingOwner<ThingType>
where ThingType : ThingBase
{
}
IThingOwner<ThingBase> thingOwner = new ThingOwner<ThingA>();