Ну не всегда годится. Надо идти с конца списка в начало и проверять все предыдущие элементы.
Код:
for i := ListBox1.Items.Count-1 To 1 Do
for j := I-1 DownTo 0 Do
If ListBox1.Items[i] = ListBox1.Items[J] Then
Begin
ListBox1.Items.Delete(I);
Break;
End;