In the 4.5 years of working with Catalyst switches, I have seen this a dozen times or so. Basically if the NIC violates the operation of the network, this problem can happen. Most common senerio is when the NIC loops packets back onto the network or participates in bridging or spanning-tree. The later is more common with dual-homed servers. If the NIC loops back packets into the network, the MAC addresses for that VLAN all get learned off the wrong. However, by just enabling BPDU-guard this problem can be prevented, because BPDU would be looped as well. In addition, avoid IP forwarding/routing or bridging across multiple NICs in the same PC.
To minimize the impact of NIC problems to shared LANs, use the following features:
ErrDisable for excessive link errors
ErrDisable for excessive link flaps
Enable Aggressive UDLD on Interswitch links (may limit problem to single switch)
Broadcast Suppression at 1-2% on all host ports and interswitch connections.
Run STP with Portfast instead of disable STP
Disable trunking and channeling manually to host ports.