В общем - со слезами и нервами - вроде как нашел решение. А заодно и пару багов Ревита (опять).
Принцип проверки примерно такой:
1. Проверяем, что связь не выгружена
2. Проверяем, что связь не помечена как "Положения не сохранены" (если помечена, то по умолчанию не проходит проверку)
3. Проверяем, что экземпляр связи имеет площадку (через костыль - спасибо кривому АПИ) (если не имеет, то по умолчанию не проходит проверку)
4. Берем какой-то объект, который мы точно знаем, что существует в связанном документе. Я взял для работы точку съемки (можно было и базовую точку проекта взять)
5. Через метод get_BoundingBox(null) получаем внутренние координаты точки съемки. Это будут координаты во внутренней системе координат связанного документа
6. Получаем Transform экземпляра связи (через GetTotalTransform)
7. Получаем точку съемки связанного документа во внутренней системе координат текущего документа, используя Transform.OfPoint()
8. Получаем ProjectLocation (в русской локализации это "площадка") текущего документа через свойство Document.ActiveProjectLocation (благо, что площадка в текущем документе есть всегда). Используем метод ProjectLocation.get_ProjectPosition(XYZ) (этот метод равносилен команде Ревита "Выдать общие координаты"), которому передаем точку из п.7. Запоминаем
9. Получаем ProjectLocation экземпляра связи (через костыль - спасибо кривому АПИ). Используем метод ProjectLocation.get_ProjectPosition(XYZ), которому передаем точку из п.5. Запоминаем
В п.8 и п.9 получаем экземпляры класса ProjectPosition, которые имеют свойства NorthSouth, EastWest, Elevation (еще есть Angle и еще что-то, но они вроде как не нужны). Вот если значения этих свойств у обоих экземпляров совпадают, значит общие координаты совпадают с физическим положением связи