Вот решение, к которому я наконец пришел, используя linq для упрощения поиска:
DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
var types = from Project project in dte.Solution.Projects
from Reference reference in (References)project.Object.References
where reference.Type == prjReferenceType.prjReferenceTypeAssembly
from t in Assembly.LoadFile(reference.Path).GetTypes()
where t != typeof(IInterface) && typeof(IInterface).IsAssignableFrom(t)
select t;
Этот блок просматривает все проекты, содержащиеся в открытом на данный момент решении, получает все их ссылки, загружает те,являются сборками и ищет в них типы, реализующие интерфейс.