Как в мессенджерах со сквозным шифрованием реализована защита от атак типа «человек посередине»?
Никакие. Это исключительно вопрос доверия. 
Даже клиент, размещенный в маркете, может оказаться вовсе не тем, что выложен в исходном тексте. Даже если Вы соберете клиента из исходников - приедет обновление, без которого мессенджер откажется запускаться - и все. 
Если трафик проходит через чьи-то сервера - лучше всего считать то, что его просматривают все, кому ни лень.
Если мессенджер для андроид то существует спец. софт для проверки открытых, ожидающих и установленных приложениями соединений на защиту от mitm-вектора непосредственно процесса обмена ключами и соединением (!!!главное слово остается все равно за устройством, его базовыми политиками подключений и типом текущего соединения в целом!!). Но митм такая штука вектор на шаг влево/вправо и уже атакапрокатывает поэтому отдельно взятая защита софтверных каскадов занятие бесполезное (ИМХО)..
P.S.: приложения найдете в google play market по запросу "mitm"; "mitm test".