I've typically just used SQL queries from the event database to do a count of logon events over the period of a day/week to indicate the frequency of user logons. We will have a few hundred logons a day, but only ever a max of 80 users simultaneously.
For available desktops, I have a dodgy method where I use PowerCLI to query the amount of powered off desktops in that pool's vSphere folder. I compare this number to the maximum amount of desktops in the pool minus the number of powered on spares. We use the 'power off desktops when not in use' policy for our non-persistent pools, so it gives us a rough indication of when we will run out of capacity. I figure if all desktops are powered on, then we must be down to the last (in our case 10) hot spare desktops, and it is time to increase the pool size. Pipe the output to a CSV periodically and you can then graph some trends in excel. Even if the figures aren't precise due to your 'hot spare' setting etc, the proportions between peaks and low periods should be. I doubt this method would help many people as it requires a pretty specific scenario to work.
I'm very interested in how others do it though. I saw a post titled 'unofficial advanced vmware view cmdlets' (http://velemental.com/2012/02/04/unofficial-advanced-vmware-view-powershell-cmdlets/), which was able to return the desktop 'status' as reported in the administrator console, however the post was for 5.1, and didn't work for me for 5.2 (you may have better luck). If you are running 5.1, you should be able to easily script a much better method of measuring how many 'available' desktops you have.