Ваш обработчик RetrieveVirtualItem будет вызван, когда ListView нуждается в обновлении. Если ваши данные еще недоступны и вы не можете ждать, вам придется создать фиктивный элемент (если не обработать RetrieveVirtualItem, возникнет исключение).
Как только ваши данные будут готовы, вы можете аннулировать элемент управления - это вызовет RetrieveVirtualItem снова для каждого из видимых элементов. В качестве альтернативы аннулированию всего элемента управления вы можете контролировать, какие элементы следует перерисовывать, используя метод RedrawItems элемента управления ListView, который работает в виртуальном и обычном режимах:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.redrawitems.aspx
Похоже, что стоит загружать ваши записи партиями, если это займет некоторое время. Кроме того, если ваши операции с базами данных стоят дорого, стоит изучить кэширование ваших ListItems (есть событие CacheVirtualItems, которое вам нужно обработать):
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.cachevirtualitems.aspx
Надеюсь, это поможет.