А функция Free и так проверяет на NIL перед Destroy
Проблема в другом - при декларации переменной класса она имеет случайное (ненулевое - а значит и валидное для проверки во FREE) значение , правильным (не вызывающим AV/SF) оно становится только в в момент создания объекта. Поэтому, чтобы не иметь дело со случйаным занчением, лучне сразу (до создани объекта) присвоить NIL, ана выходе перед удалнеи объккта - пвоероять на NIL (на признак - создался ли объект). Лично я давно взял эту методику за стандарт в случаях, если возможны сбои при создании объектов.