Быстрого способа не знаю, но можно попытаться немного выиграть в скорости, если использовать не динамический, а обычный массив с большим количеством элементов.
Ещё я от препода слышал, что цикл For...DownTo...Do работает медленнее, чем For...To...Do (не знаю насколько это правда), но в этом случае придётся для скорости сделать как-то так:
Код:
N:=length(ims)-1;
for i:=0 to N do
ims[i].free;
setlength(ims,0);