It seems pretty hit and miss, doesn't it? Sometimes it works, sometimes not. I have had it happen to me just now, bizarrely. In the absence of the other evidence, I'm blaming you
Something you could try:
Enable the debug shell
sudo systemctl enable debug-shell.service
When it gets stuck at "Reached Shutdown Target", keep Alt and the Left D-Pad key to get a root shell.
Type
systemctl --full list-jobs
The one that shows a 'running' status is the one that holding everything else up (you should see things like 'shutdown' are left at a 'waiting' status until that one is complete)
For me, the 'running' process was called something like 'dev-disk-by[lots of numbers].swap', which turned out to be a symlink to dev-zram0.swap. I killed dev-zram0.swap ("systemctl kill dev-zram0.swap" and/or "systemctl --signal=9 kill dev-zram0.swap" if "systemctl list-jobs" is still showing things), and then typed "shutdown -h now".
Is it this that's stopping your shutdown too?
----
BTW - in the previous posts, don't worry about references to SLIM (which is the graphical login manager you never see if you've got automatic login enabled) and to passwords for powering off (which only happens with XFCE).