Hi,
TestComplete provides a set of .WaitXXX() methods (e.g. .WaitChild, .WaitAllChildren, WaitForm, etc.) that are recommended to be used to look for the objects when the sought for object may or may not exist.
.Visible and .VisibleOnScreen properties can be used to check if the given object is visible on screen.
Exact answer to your question significantly depends on the implementation of the tested application.
For example, if you are lucky and all fields at the form are named with, say, 'fld_' prefix, then you may search for all objects that start with that prefix, iterate through the returned objects list, check if the object is visible, compare the returned objects list with the previously saved 'master' one and report differences if any.
If you are not lucky and developers assigned random names to the fields, than you may search for the fields one by one. Obviously in this case it will be not possible to detect if the new field is added. You may use image comparison to detect new fields, but this is error prone way.