USB bus Differential signals and Pin swapping
At the receiver end, the Data- is substracted from Data+ (a difference is calculated). Then if the difference is positive, and above a threshold it is translated to a logic 1 or 0, depending on the protocol, if it is negative and below a threshold, it is translated to the opposite. By swapping the lines, you basically invert the logic levels, thus messing up the protocol.

Edit: Chris Stratton pointed out the non-differential use of the lines during speed identification. More info about this here