Whack-a-bug

You used '||' in one place instead of '|'

(0 << USICNT2) || (0 << USICNT1)

Also, you really don't need all of the 0 << n, since that is always 0, unless you want it for documentation.

It might be simpler to have a bunch of const int variables and let the compiler optimize these into a single mask:

const unsigned overflow           = 1U << USIOIF;
const unsigned stop_condition = 1U << USIPF;
const unsigned data_collision   = 1U << USIDC;

Serial.print (overflow | stop_condition | data_collison, HEX);