When I had this problem in the past (Mojave), it was a bad extension (from an old iPad-as-secondary-display program in my case) that it couldn't boot past. Can you boot without 3rd-party extensions (hold shift during boot)? If that does work, you might want to move any extensions in /Library/Extensions to somewhere else harmless (or delete them if you don't care) so it can't load them. Since this was Mojave in my case, I think some of mine were so old, they were in /System/Library/Extensions. Catalina, with it's read-only mount volume might be different. Should have moved them at least.