the Link of networkLink can change as result of a Update command, see
http://code.google.com/apis/kml/documentation/updates.html
so that is where onChange is intended (or by default)
There is no real way to have a 'on demand' refresh from the server
end.
Although the update mechanism just mentioned could be used to fairly
lightweight do this, two slight variations:
1) have a never refreshed network link, that is just updated by a
periodically fetched network link, that most of the time returns
nothing, but if there is something, updates the content using the
Update mechanism.
2) have a main networklink with onChange, and then a second link that
refreshes often, like above, but if there is new content it refreshes
the main link by for example incrementing a serial number in the url
Alternatively if you meaning a local program (on the same machine)
then you can probably do something with the COM API (or apple script)