Não há uma maneira à prova de falhas de detectar isso (se houvesse, ataques MitM não seriam um problema!). Existem algumas técnicas possíveis, no entanto.
Você pode tentar ver os horários necessários para servir alguma coisa; um atraso pode indicar um ataque MitM ocorrendo. Ou pode apenas indicar que a rede está sendo lenta.
Se você acha que alguém está editando o conteúdo das coisas que está enviando / recebendo pela rede pública, verifique as impressões digitais / hashes MD5 / etc. dos dados que você está enviando / recebendo.
Como Maciek aponta, se o MitM estiver jogando com certificados e conexões SSL, isso deve ser bastante óbvio, já que os navegadores irão avisá-lo se os certificados não corresponderem (embora você precise confiar em seu navegador; se alguém já instalou certificados falsos no seu computador, isso não é muito útil).