You can't do that. The type system is rightly objecting to you attempting to change the method type in the overriding class. IChildThing might derive from IBaseThing, but it is not the same thing. For example, you might add some more methods to IChildThing later on. Then one class (Concrete) would be promising a returned object with a different signature than the base class - that's a type error.
If you need to refer to a IChildThing in some cases, how about something like:
internal class Concrete : Base<ChildThing>
{
public override IBaseThing<ChildThing> Thing
{
get { return ChildThing; }
}
public IChildThing ChildThing { get; set; }
}
If all you have is a Base though, then you can't get at the IChildThing safely. That's the nature of a strongly typed system like this. If that's a problem, then if you gave a more concrete example I might be able to suggest how to restructure to avoid that problem.