Using SSL would prevent any MTIM attack with the setup I describe. Using TOR is slow, and is not scalable for the entire network. TOR would also increase the chances of a successful Sybil attack, as an attacker could create many malicious nodes. Also, .onion addresses are subject to timing attacks that can lead to de-anonymization.
Being on a public WiFi means the WiFi provider can impersonate any IP address or domain so long as SSL is not being used to authenticate. SSL is (very incrementally) slower than unencrypted communications, and the majority of nodes are not running on a potentially malicious ISP, so nodes will probably not be willing to connect via SSL on any large scale.
I know SSL looks secure, but we can't trust it at all... I remember some years ago when I was learning about the MITM attack there was a tool called SSLstip that allow us to attack even if the users were on a secure socket layer. I will leave this link for those who want to learn more about this tool.
https://tools.kali.org/information-gathering/sslstrip
And about the topic, if 51 Node attack would be possible, then anyone could kill bitcoin with virtual machines
![Wink](https://bitcointalk.org/Smileys/default/wink.gif)
The connection between your public WiFi laptop and your home computer would be initiated via SSL, and if the information being relayed back from your home computer to your public WiFi laptop is not returned via SSL, you will know there is a problem and that you may be the subject of a MITM attack. A SSLstrip attack needs both of the above to not be true.
Detecting a MTIM attack is just as good as preventing it because you will know not to trust anything you receive via the internet.