Add a hook to ‘site_transient_update_plugins’ (filter) to inject an update to get update data for your plugin.
This lets you add data about update information which wordpress has retrieved from it’s own server about any free plugins you’ve installed.
Query your site with the latest version info, which will in-turn be added to the update data to be used with wordpress with the rest of the plugin update data.
Use get_transient($transient_name) to get cached data (eg. version info) which is cached for a period of time (set_transient) so your server doesn’t get hit every time a person hits the site. (look for the force-cache variable in the $_GET vars when the ‘Check again…’ button is used.
Also use the plugins_api to show plugin data when the plugin update-details is shown.
From talk by Elliot Condon (elliotcondon.com)