STP would work and result in exactly what he saw.
Switch A is the one with the looped ports. Switch B is connected to port 1, Switch C is connected to port 2. The looped ports are 3 and 4. There's some other computers on ports 5 to 8. (Note that with a straight-through cable there should be no actual link, even though the light might come on, however some switches auto-select uplink mode. Connecting a NIC to an uplink port often gets a link light too even though it's not a good connection. We'll assume a valid link.)
SWB receives traffic from Computer1 destined for Computer 2 on SWC. It forwards the traffic to SWA. If SWA does not know the path for the MAC address of Computer 2 (it's never passed traffic from computer 2) then it broadcasts it to all ports. So this packet goes out through ports 2, 3 and 4 (not 1 since that's where it came from). On port 2 it goes to SWC which sends it to Computer 2. In the meantime, port 3 has looped the traffic to port 4, and vice versa.
The switch doesn't know the traffic is coming from itself. It just sees a packet come in on each port. As far as it knows, each of those ports is going to some other node, either a computer or another switch. So it inspects the packet, and sees the source is the MAC address of Computer1. It checks its tables, and wait a second, we already have an entry for that MAC saying that it's on port 1. And what's this, port 4 is also bringing in a packet with a source for computer 1. The switch then calculates which ports need to be shut down. I forget exactly how this is calculated, it doesn't matter in this case since we know that the port to switch B got shut down. This would probably be due to the fact that the MAC table entry was older for that port than on 3 and 4. It might shut down one of those ports as well, but I'll assume not for the moment.
So now, port 1 is disabled so SWB can't get any traffic through.
Now Computer 2 responds to Computer 1. SWC sends the traffic to SWA. It tries to send it to Computer 1 over port 3 or 4. Then it gets the same packet back on the other port. It sees the source is Computer2, and shuts down port2, so now SWC can't pass traffic.
This is just how I see it happening. There may be steps in the process that I don't remember or ways that prevent it doing this, or some switches may not perform a full spanning tree process so this happens when it wouldn't usually. But it certainly seems that something close to this occurred in this case.