This might happen if your account is no longer a SystemAccount
(i.e an account owned by the System Program). Only system accounts are allowed to be fee-payers for a transaction. You can find the check that throws the error above here.
Check the recent transactions leading up to the weird behaviour. The most likely explanation is that an instruction modified your account by initializing it as an account owned by a different(maybe random) program.
This might happen for instance when you make a mistake in constructing any instruction that initializes a program-account, and pass your provider wallet in place of the account that should have been initialized. Now your account would no longer be owned by the system-program, and instead will be owned by the new program.
A few answers describing how to rectify this already exist, namely (1) and (2).