from sqlite import db_start, create_profile, edit_profile
from main import balance
main импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который ...
Ну ты понял.
Быстрого волшебного решения тут нет. Разбирайся с областями видимости, избавляйся от глобальных переменных.
Например, почему у тебя при создании нового профиля используется balance? Т.е. новый пользователь получает столько денег, сколько было у последнего активного?
Почему вообще у тебя вещи, специфичные для одного пользователя, лежат то в глобальных переменных, то в данных машины состояний (state)? Бери их из БД , когда они потребуются.