You didn't state this but I assume you are using wu-ftpd. If so, check the following :
Reasons for denial are logged using syslog. Check your logs.
Their shell is in the /etc/shells file.
/etc/shells needs the correct access rights (world readable and not world writable).
If you're using shadow passwords : make sure the daemon is compiled with shadow password support.
Setttings in the ftpaccess file. rtfm at http://www.wu-ftpd.org/