When you start syncing, geth downloads the state tries for that moment. So when downloading is completed, geth needs to catch up for all the changes that happened on the state while your client was downloading. This is called state healing. Therefore, the faster your client downloads the state, the less the healing it needs to do.
In the geth documentation says that you can't know how long it may take to heal the state. But I believe you can make a rough estimation. You have to look at the logs to find out how fast your client heals accounts. I figured mine healed around 16 accounts/s. (Unfortunately
eth.syncing doesn't give this info.) You look on etherscan.io to see how many daily active accounts there are, so you can know how fast the state changes. These days (2023/6) there are ~400.000 daily active accounts, so the rate the state changes is ~4.6 accounts/s. To know when your client will heal up to the state you have to use this formula:
time_heal_ends = (account_healing_speed*time_healing_started-state_change_rate*time_sync_started)
My client took 46 hours to heal and this formula was the most precise I could think of. It estimated the healing time to be within half an hour of the actual time.