I had the same problem with Proftpd, so it's definitely not a problem with Apple's ftpd. Couldn't figure out what was going wrong until I ran into your message. The mentioning of ftpchroot rang a bell. Users in /etc/ftpchroot must have a valid shell! As mentioned in /etc/shells. Never thought...