Как через DragDrop передать объект по ссылке?
Не очень понял.
Напрямую ссылку с объекта из процесса в процесс не передать. У процессов память разная. Процессы объекты друг друга не видят.
  Если вам нужно только состояние объекта: например, в одном процессе тем или иным способом инициализировали и передаете во второй процесс. То тут достаточно, чтобы в процессы были загружены сборки с типом вашего объекта, и  через сериализацию склонировать ваш объект. 
Но поскольку вы пишите, что вам сериализация не подходит, могу предположить, что вы хотите из одного процесса обращаться к методам и свойствам объекта другого процесса, чтобы это вызывало некий отклик в первом процессе (ну допустим через события генерирующие при изменении состояния объекта). Тогда во втором процессе нужен некий прокси-объект, который, когда обращаются к его методам и свойствам, будет посредством некой системы сообщений обращаться к методам и свойствам исходного объекта. Это похоже на .NET Remoting или WCF.
Передать "объект" из одного приложения в другое нельзя, ибо память у каждого своя и нельзя просто так "отдать" другому процессу кусок своей памяти "на попользоваться". В вашем случае я вижу решение только через сериализацию. Не вижу проблем сериализовать инициализированый объект, обычно именно такие объекты и сериализуют. Не ясно также что это за объект перетаскивается, возможно достаточно передать его "параметры" а на другом процессе просто создать его снова.