Device driver initialization and device timeouts is now the biggest factor in boot time. Most of the delay on the Windows logo are drivers following their hardware reset and init protocols where they have to wait so many xxx ms for the chip/bus/etc to reset before proceeding. Additionally, plug and play, things like USB and PCIe have timeouts when detecting and initing devices, etc. That's low level.
Then getting to desktop you have high level things like DHCP, SMB, network client, etc adding to the delays as your desktop environment loads. These delays and waits are purposely written into the software because of the nature of what it has to do, eg: wait for IP to init, then attempt to contact server, wait 5 seconds, if no contact, then log on with cached credentials, etc.