Is this an efficient way of mounting a file-system via SSH (SSHFS)?
Efficiency is just not an issue in this kind of task.  As "glue" code, it's not computationally intensive.  There are, however, some maintainability issues.


In mount(), the basic outline is:

def mount():
    if os.path.exists('/home/user/MNT/MEDIA/'):
        ...
        exit(0) 
    if not os.path.exists('/home/user/MNT/MEDIA/'):
        ...


… which should be expressed as:

def mount_or_unmount():
    if os.path.exists('/home/user/MNT/MEDIA/'):
        ...
    else:
        ...

Using recursion for error handling is weird.  That would normally be handled using a while-loop.  It's also slightly odd that the empty string triggers a retry, but any other invalid input would exit the script.
The two sudo sshfs commands differ only slightly.  Your code should be structured accordingly.

REMOTE_FS = {
    'i': 'user@10.0.0.100:/media/Hitachi/',
    'e': 'user@xxxxxxxx.com/media/Hitachi/',
}

...
while True:
    ip = input("Type I/i for local connection, E/e for external\n")
    fs = REMOTE_FS.get(ip.lower())
    if fs is None:    # Input was not 'i' or 'e'
        continue
    subprocess.call(['sudo sshfs -o idmap=user -o uid=1000 -o gid=1000 -o allow_other -o default_permissions -p 100 %s /home/user/MNT' % (fs)], shell=True)
    break