Intenta evitar el repintado durante el bucle:
Código Delphi
[-]
SendMessage(ListView1.Handle, WM_SETREDRAW, FALSE, 0);
... Mi bucle de llenado...
SendMessage(ListView1.Handle, WM_SETREDRAW, TRUE, 0);
InvalidateRect(ListView1.Handle, nil, TRUE);
Saludos.