If I can tune the transmitter such that the frequency at the satellite is one of the listed frequencies, how sure can I be that the receive is as published?
Not very sure at all. The published frequencies are usually nominal, and satellite designers don't make extraordinary efforts to match them exactly. What's worse, satellite designers also don't make much of an effort to make the oscillator(s) completely stable, so there's some drift to contend with. Both issues vary from satellite to satellite, and some future satellites (Eagle) are supposed to be better. And of course the user's own rigs can have the same issues, though with modern radios in benign hamshack environments this is not a big problem.
You need to allow the user a way to adjust the conversion constant. As a minimum, this should be something like a configuration file entry. Ideally, there would be a nice easy way to do it from the radio's front panel by tuning the receiver manually to match the downlink and then telling the program to save that value.
If you really want to get fancy, use a soundcard interface to transmit a test signal through the satellite and determine the frequency error on the received signal. Just be aware that a naive implementation of this scheme is going to be fragile, so you will want to use every trick. You'll also want to use every trick to make sure your transmissions are very short and as low in power as possible, to avoid annoying other users.
It would be a nice touch if your resulting database of satellite frequency information is in a format that could be shared from station to station, so a new user would have a good starting point for his own configuration file. You can provide a default config with your software.
Can I extend that to the point where I would be able to automatically determine frequencies (at the satellite) of the downlink for a given uplink and then compute doppler from there?
Yes, in theory, except for the spacecraft oscillator imperfections mentioned above. And that will be enough if every operator does it. But every operator won't, so you need something much more flexible. You want the user of your software to be Super Operator who's never confused and always on frequency but you don't want to insist that every other operator live up to those standards. So you need a nice, easy way for your user to interactively adjust things and follow around the other operators on the passband.
Longtime readers will anticipate that I'm now going to plug my old essay on the subject: http://www.amsat.org/amsat/features/one_true_rule.html -- even though it hasn't been updated with a discussion of any of the newer software options for Doppler tuning.
73 -Paul kb5mu@amsat.org