That's not true. Consider the problem of detecting null pointer dereferences. Bucketing points into "null" and "not null" is lossless w.r.t. this problem domain. This can be very useful. When you stick Top and Bottom into the possible options is where you get lossy behavior. That can be useful too, but it isn't strictly necessary.
If you aren't considering an abstraction with respect to a specific domain then there every single abstraction is lossy, not just the useful ones. You cannot transform state in any way without loss because, given enough effort, all properties of state are observable. This makes "lossy" a worthless descriptor using your approach.
Instead, I propose that we consider abstractions with respect to some problem domain. If you have states {null, notnull} then this is lossless but {null, notnull, top, bottom} is lossy.