The module __main__ is somewhat special. It's there from the very beginning (so far as I can tell).
    $ python3 -c 'import __main__; print(__main__)'
    <module '__main__' (built-in)>

And without importing __main__.
    $ python3 -c 'import sys; print(sys.modules["__main__"])'
    <module '__main__' (built-in)>

In light of this, it seems to me that the technical implementation of the proposal amounts to

1. When creating a new module object, set
        __main__ = False

2. When initializing the built-in __main__ module, set
        __main__ = True

I don't see a technical problem in the implementation of this idea. (I suspect the same rules will also work for C-coded modules.)

Whether a good idea or not is another question.