Sadly, after posting this, I had a typo in my keystone database after having to resort to the python debugger. You have to ensure you that your os_parameters (or OS_ env) are exactly right for it to work.
Here is the minimum set of OS_* environment I needed for glance to work:
OS_TENANT_NAME
OS_USERNAME
OS_PASSWORD
OS_AUTH_URL
One thing I found a little frustrating is that the glance client does not accept the same parameters as the keystone client in this regard. For example, I needed to use names instead of the ids (e.g. tenant name vs. tenant id). Another thing that is a little confusing is that if you define os_ name AND id, it's not clear to the user which one is used, and this could cause the user to get a bad catalog list or invalid authentication.
To verify that you have the right environment or settings, use "keystone catalog" (or "keystone catalog --service image") with the same environment. A successful call should result in the list service endpoints.
As a note to the developers, it would be nice if the command-line tools would produce more information, such as the settings used to authenticate particularly if debugging is enabled.