Check for user interaction in the workspace
For your special case I would use a mix out of modal operator and the depsgraph_update handler.
The modal operator doesn't run when the other operators run. E.g. move operator.
Then the depsgraph_update handler run, because the user make important changes to the scene. So if one of them runs the user interact with blender.
Some cases that are not caught: moving nodes, moving the frame slider (only found these 2)
For these case you maybe could use an event to check if the mouse was pressed and then released or if a key was pressed which starts the moving.