My two cents: I personally wouldn't "go there" as far as even suggesting a feature for changing types like that. No computer language that I have used has ever allowed runtime switching of object types, and there are plenty of software design patterns for handling what people need to do (e.g. what I had proposed before is a basic "pimpl" design pattern).
But let's say that it was determined that changing an object's inheritance tree at runtime was desired, as opposed to the more typical composition that is supported with Quest (or switching of POV/object references in this case, which is a way to defer object creation/selection until a type is known). Consider the challenges involved with that, due to the multiple inheritance involved, especially as far as common attributes defined in multiple base types.
Consider this case:
<type name="BaseA">
<color>Red</color>
</type>
<type name="BaseB">
<color>Blue</color>
</type>
<object name="Derived">
<inherit name="BaseA"/>
<inherit name="BaseB"/>
</object>
What is Derived.color? It turns out it's "Blue". So, at least empirically, it seems that the effective attribute for an object is in the latest <inherit'ed> type where it appears.
Now let's say someone wanted to *change* a base type. We would need methods to, perhaps, remove a base type, insert a base type, replace a base type? Would we want the ability to remove all inherited types and add new ones? Would we want to be able to remove BaseA and replace it with BaseC, or perhaps have BaseC be inserted into the inheritance list *after* BaseB?
And, in the end, it would be quite a complex undertaking to implement something that a) will actually rarely be used, and b) is really not needed, as there are plenty of ways of implementing software that don't need such a feature. There might even be objections from a purist software design point of view as well.
I'd say define your objects to be the types you want, statically. If you need dynamic, runtime selection of objects of different types, then use a contained object that you can redefine on the fly (POV is just such an indirect object pointer/reference).