There are many, many ways you can become a MITM, virtually at all layers of the networking stack - not only the physical one. Being physically close to your target can help, but is by no means a necessity.
At the physical layer, the attacks you can get are very overt: splice a ethernet cable, use a optical tap, or capture radio signals.
A passive optical network, tap - photo by Roens
Some active attacks can have physical access as a precondition - many others do not.
At the data link layer, passive attacks are incredibly easy: just put your network card into promiscuous mode and you can see all traffic on your network segment. Even on a modern (switched) cabled network, MAC flooding will ensure you can see more than you ought to.
For active attacks on local networks, ARP spoofing is quite popular and easy to perform - it basically makes your computer pretend it's someone else - usually a gateway, so that you trick other devices to send traffic to you instead.
ARP spoofing - diagram by 0x55534C
Data link attacks work as long as you are connect to the same local network as your target.
Attacking the network layer is easy if you have physical access - you can just impersonate a router using any modern linux machine.
If you don't have physical access, ICMP redirect attacks are kind of obscure, but sometimes usable.
Of course, if you have enough money on your pocket you can do it NSA-style and intercept routers when they are shipped to their destination by (snail) mail - just tweak the firmware a bit and you're good to go.
Attacks at the network layer can be performed from any point in the (internet) network route between the two participants - although in practice these networks are usually well defended.
I'm not personally aware of any attacks at the transport layer.
At the application layer, attacks can be a bit more subtle.
DNS is a common target - you have DNS hijacking and DNS spoofing. Cache poisoning attacks against BIND in particular were very popular a couple of years back.
DHCP spoofing (pretending to be a DHCP server) is quite easy to perform. The end result is similar ARP spoofing, but less "noisy" on the network and possibly more reliable.
The broadest application layer attacks can be performed from anywhere in the internet.