Are we talking about a single site here, or are we talking about getting every web application on the Internet to switch from MD5 to SHA1?
If the former, and assuming that the user's password is received by the server in plaintext form (rather than being hashed client-side before transmission) then surely all you would need to do is to run the two in parallel, using two fields in the database (PasswordMD5 and PasswordSHA1)...
The authentication function would take the plaintext username and password, load up the record (using the username as the primary key), and see if there was a value in the PasswordMD5 field.
If there was, then the user is still on MD5, so the plaintext password would be MD5 hashed, compared to stored hash, and if successful, then the plaintext password would be hashed using SHA1, stored in the PasswordSHA1 field, and the PasswordMD5 field cleared.
If there wasn't then the user is already on SHA1, so just SHA1 hash the password, and compare to the stored value.
This approach would be completely invisible to users, and would migrate them from one hashing algorithm to another very painlessly. Later on (once all the users have been migrated, perhaps after a mailshot to ask them to login), you could remove the MD5 parts completely. Job done!