If you are ready for a real adventure you can try the 'log' command in Terminal.app to examine Time Machine log messages. Here are some I use...
To show the log messages from an already-run backup:
log show --info --style compact --last 2h --predicate 'subsystem=="com.apple.TimeMachine"'
Make sure to get the single- and double-quotes correctly. You can use "--last 10m" or "--last 12h" to specify the last 10 minutes or last 12 hours, respectively.
To show TM log messages in real-time as the backup happens:
log stream --info --style compact --predicate 'subsystem=="com.apple.TimeMachine"'
That last command continues until you hit Ctrl-C to terminate it.
Don't be alarmed if you see a few "Error" entries.
You can keep the Time Machine Preferences window open while the 'log show' command runs, and when you see the cleanup step in the pref window, look at the log messages after that time. Each log message has a timestamp on it so maybe you can figure out what is taking so long...