Thanks for your investigation!
If I understood you correctly, you had a field with type = "User". Also initially, the field had a representation as "Name (with presence)". And, at that moment, you were NOT able to retrieve any results with Camlex.NET using
Camlex.Query().Where(x => x["CreatedBy"] == (DataTypes.User)"loginname")
Then you changed the representation of the field from "Name (with presence)" to "Account" (still having the type of the field as "User"), and then Camlex.NET started to retrieve items successfully.
I checked such situation and for me it worked fine in both cases - having the representation as "Name (withpresence)" as well as "Account". And from logical point of view, it is OK, because the background storage (determined by the field
type = "User") is not affected by the representation (which affects only how the field should look like). So, in both cases, the way (in which the user value is stored) is the same - and as the result, CAML request should work similarily.
Did you use fully qualified account name (like "DOMAIN\LoginName") or only login name (like "LoginName")? In the last case, CAML will not work.