Will man dem entgehen, muss man entweder genau Herr darüber sein, wann wer was frei gibt oder man wendet sich einer GC Sprache zu, da kann man anders rumfuhrwerken.
Oder man benutzt einfach konsequent das oben bereits genannte FreeAndNil, dann knallt es auch direkt, es sei denn es handelt sich um eine lokale (und daher nicht automatisch initialisierte) Variable.
Einziger Fallstrick dabei ist, wenn man den Code später auf Interfaces umstellt. An FreeAndNil kann man nämlich auch Interfaces übergeben, deshalb knallt es leider erst beim Aufruf.