To begin helping you with this, it would be helpful, to get more scientifical data, to see at what period of time, your system is actually hanging, causing the long boot time.
T to enter terminal.
Here are my results when I run that, and these are recent results as of todays boot!
Startup finished in 15.886s (firmware) + 7.411s (loader) + 6.045s (kernel) + 9.541s (userspace) = 38.885s
graphical.target reached after 9.532s in userspace
Please post your results here for us to analyze...
Additionally, are you using a mechanical hard drive, or a SSD drive? A mechanical hard drive generally takes about a minute to boot into an OS at the longest. As your boot time seems a bit extreme, we still want to have a look at the data you supply from your results. An SSD drive should take 15-seconds roughly, and fastest NVME PCIE Gen 4 drives should get there in 5-seconds.
Also, it wouldn't be bad to get info on your hardware as well. While in terminal, you can also run these commands after you have completed the first part.
sudo apt install screenfetch
Y to confirm
Once installed, just type
Please post your screenfetch here, can be easily done by taking a screenshot of it if you want.