Hi @DrQuincy I think you can do this by hooking in to PW's login flow. Here's how I'd attempt to do this - untested - just to give you some inspiration...
Create a new field on the User template for their hashed password from your old system.
Write a script to populate this field where there's an email match between the old system and the new one. If the new system doesn't have users in it yet, then great, you'll be creating user records for everyone from the old system. Make sure you create a long, random, password for the initial processwire password on this new user record.
You'd need a pre hook on the session::login method. If the user, matched by email if that's how you did it in the old system, has an old password hash value, use your old pwd checking algorithm to authenticate them. If that works, the plaintext password they submitted to you is the correct password. Now set the PW password on that account using the plaintext password you just verified is correct AND delete the old password hash value.
Now the correct password is stored in the User's pw pass field, just exit the hook and it should work, or call the forceLogin method to log them in and do your own redirect.
Basically, as people log in, they will convert their accounts over to PWs way of doing things. Once they convert, the login process just reverts to using PWs method.
Potential gotcha: more than one account in the PW system with the same email (if there are already accounts in there.)
After a reasonable period has elapsed, you could then deal with seemingly dormant accounts by emailing non-converted users and asking them to login (or otherwise handle them as appropriate.)
Hope that helps.