The recent tip submitted by Trevor Seeney was a good tip, but I think our policy goes a bit better, without any...
We always set up new users with the same password as the user name, with the password set to expired.
The user then signs on and has to immediately change their password.
We don't allow re-use of any of the previous 32 passwords, we force password change every 30 days, no letters can be in the same place as they were on the previous password, minimum of six letters, no consecutive character repeats and no double numbers (00 12 etc).
Unused user profiles expire after 30 days and are disabled. All this from system values, it is of course possible to over do it.
One company I worked for had a password-changing program that looked up a huge database of 3 letter words and created a subfile page of 6 letter words constructed from 2 three letter words. The user had to choose one of these randomly paired words.
For example, the program may put dad and lip together to make dadlip. If the user didn't like any of the sixty or so words suggested, they could refresh the screen and get another load. The idea was okay, but I found it a bit of a nightmare as a user.