Don't know if this thread is still active - but I've just gone through the same exercise and found a (minor) bug in the example custom_userform function. There is an extra calling arg ($uid="") that seems to confuse things so error messages don't show up. If it is removed, then the "new" arg sent by the case 'new' code in users.php when first called shows up as an error message. I had to add a check for this to the code
Text Formatted Code
if (!empty ($msg) && ($msg != 'new')) ...
hope this helps someone