Скажем, вы делаете следующее:
1) Загрузите foo.dll с помощью LoadLibrary.
2) Получить указатель на функцию, используя GetProcAddress.
3) Вызвать функцию, дав вам ссылку на COM-объект, реализованный в этом модуле.
4) Освободите foo.dll, позвонив в FreeLibrary.
5) Вызовите метод для COM-объекта.
Вы ожидаете, что шаг 5 будет успешным, а не AV? То есть сам COM-объект отвечает за вызов LoadLibrary (снова) для увеличения счетчика ссылок, который Windows хранит для каждого модуля, гарантируя, что он не переживает модуль?