Choosing a Base Descriptor
You should use braces {} for single if statements too. This makes your code less errorprone.  



If you are refactoring some code you should be sure to have good tests at your hand to validate that the refactored code behaves like the old code.  



By extracting the check for all these this.xx() properties to a separate method like  

private static bool ShouldReturnCurrentDescriptor()
{
    return (this.IsObjectBeingValidated) ||
           (this.Locked) ||
           (!this.IsReadOnly &amp;&amp; (this.IsNewInCorrection || this.ImportedDataMD5 != null));
}  


The former code can be refactored to  

TableTypeDescriptor baseDecriptor = base.CustomTypeDescriptor as TableTypeDescriptor;

if (ShouldReturnCurrentDescriptor() ||
    (baseDecriptor.OldTableDescriptor == null))
{
    return baseDecriptor;
}
return baseDecriptor.OldTableDescriptor;