I guess it would be nice to add a [MINIMAL pragma](http://www.haskell.org/ghc/docs/7.8.1-rc2/html/users_guide/pragmas.html#minimal-pragma).  Using the names I suggested above:

```haskell
      {-# MINIMAL userPasswordHash, (setPasswordHash | (userPasswordSalt, setUserHashAndSalt)) #-}
```