The control flow would be much simpler if the checks would go as follows (ignoring style now ;-):

if (this == obj) return true;
if (! obj instanceof BitVector) return false
<the code for the rest of the checks, but with the size comparison replaced by a flat if (immediate return false)>

This should lead to code with almost no nested if-clauses. More readable. This is also how the auto-generated default equals in Eclipse are constructed.