However, it may work to start at the Case object and look up to the User, similar to the Lookup Relationships and Outer Joins section in the SOQL documentation. I'm not sure if this would work for you, but it's something you may want to try.
To work-around, this is very complex. You'll need to create a custom lookup field called "User Owner", or something. This will store a lookup reference to the User if the Owner is a User. This field will need to be populated using an after insert, after update Trigger. All values for this new field will need to be data loaded for earlier existing Cases. But, once you have this new "User Owner" field, you can access custom fields on User through SOQL, using it.