To avoid the situation were people choose weak password, there is a simple solution.
Do not let them choose. The client should generate an account itself.
It would be like the bitcoin private keys. Hidden from the user, unless he's looking for it.
But to do that, then you need a wallet. That's because the user will not be able to memorize the key.
Nxt doesn't have a wallet.
A "wallet" is nothing more than a file with private key in it. This can be done on client side.
I think the upcoming official client by "Nexern" uses the following system, and I really like it.
Ask the user to make a password (does not have to be strong). Make a random string and combine them both, so it will look like this:
(1) The user makes a password called say "mypassword".
(2) The client makes a random password that is say "fdhghfgfdk5756fhfgh44r677#"
The client saves that random password in wallet.dat
Now the user's full Nxt password would be "mypassword_fdhghfgfdk5756fhfgh44r677#"
That would be impossible to crack.
The "mypassword" part will exist in user's brain, and fdhghfgfdk5756fhfgh44r677# part is saved in wallet.dat
Make sure to remind the user to backup wallet.dat.