I am currently developing an app that will request users to transfer X amount of sol to my wallet address via Phantom wallet, But I faced an error while testing this, the error was that "This account may not be used to pay transaction fees" after some research I found out that a wallet which signed a smart contract (created PDA or Non-PDA data account) has transferred Its ownership to the smart contract and can't sign the transfer. but I was wondering how to avoid this kind of error which is possible for a user who doesn't know how the Solana ownership works to try to sign a transfer transaction with a wallet that the owner is not SystemProgram, So I wanted to be sure that my understanding of this ownership is correct and to know what is the best practice to prevent it.
NOTE: I don't have a smart contract to do the transfer I just use anchor's transfer approach with TS code.