Broadcast frames are flooded to all ports (within the VLAN) but the one it was received from.
An ARP request is sent as a broadcast. When there is a loop on the switch, the already forwarded broadcast returns to the switch through the loop (twice actually) and is flooded to every other port (from the loop POV) again - including the original source port.
Since each loop partner is also included in the flooding, the broadcast continues to circulate through the loop in either loop direction, sending duplicates out of all switch ports on each cycle. That way, broadcast frames are accumulated until the loop bandwidth is exhausted. If all ports share the same bandwidth, extremely little productive traffic will be able to make it.
The usual countermeasure is to use a spanning tree protocol, removing the looping ports from the active network.
Another, cruder approach is to limit broadcast bandwidth. Since that drops productive broadcasts together with broadcast radiation, a loop will still cause network problems, only less violently so.
Since broadcast radiation also messes up the switch's MAC table - the circulating broadcast pulls the broadcast source MAC to the looping ports - a simple switch practically has no way to recognize what is happening. A more sophisticated switch could notice that the MAC is rapidly jumping across some ports. It could also be configured to shut down the looping ports when excessive broadcasts are detected.