If a user does not have a role, keep redirecting them to the same form until they complete it?
You can use hook_entity_view, this is called when a user views any entity type, also hook_ENTITY_TYPE_view can be used if you want to redirect on specific entity type view like node.