Why does it take so long for hot water to arrive in the shower?

Several conditions contribute. Distance your shower stall is from the hot water heater. Type and age and size of pipe to your shower stall from your hot water heater and climate. Cold weather climate tends to cool the static water in the pipes while waiting to be turned on. Old pipes have a build up of rust / minerals inside slowing the normal flow. Distance, well it takes a while for the hot water to leave the tank and get to the faucet especially if the other two factors are involved.

If you can, insulate the pipes. This will help save energy and keep the water in the pipes hotter longer. If the water still takes an unacceptable time to warm up (Assuming you're only running the hot water to warm it up) you can buy a circulation pump that circulates water from the hot line to the water heater through the cold line. This means that you'll have hot water at the hot tap immediatly. (Actually, the circ pumps I've ssen for this job are usually timed) The down side is you'll also have hot water on the cold faucet too! If you can install a return line (basically another cold water line connected at the inlet to the water heater) the pump idea will work very well.

Turn on the hot water to the lav. and or tub. Then shut off faucet when water gets hot. It only takes a few seconds to do this. Then your shower will have hot water very fast.

The pressure reading of a hot water tank will also contribute to this problem. If the pressure is low and if distance is a problem this could equate for the long time for it to arrive. However, nowadays because of technology, most hot water tanks are made to the maximum pressure rating (600kpa) thus solving this problem. The idea above about opening a bath tap first is also a good idea.