2
I don't think that there would be an easy hack for it.
a) to keep track of the 6-months interval, you would have to record the date for each user. Maybe you could add an extra field in the Profile and make visible only to the admin. Then you would have hack the core to check at login when user changed that login last time and force him/her to change it.
Or you could add a field to Profile for a reset, and then run a cron every six months to reset all users to yes, and thus force the user to change the password.
b) you could set the check in your new hack as a field validation
c) while checking for the reset, if it is on, you could then save the current password and compare it to the new one, to make sure that they don't match
Another way that might be easier, would be to run a cron job that would use the "lostpass.php" to fake for each user a request for a new password, sending them a new password and forcing them to use it, and to change to whatever they want.
Richard is the guru in this area, so maybe he could come up with better...