Usually, when I set up vsftpd it is for use behind a firewall. The only access needed to that system is also behind our firewall. So, there is no need for iptables or selinux. Just recently, I repurposed a 6 1/2 year old 64-bit Linux server, wiped it clean, and installed CentOS 6.4. Then, I installed vsftpd, and that is when the afternoon got to be interesting.
Even local ftp logins to my own account resulted in the all to well known 500 OOPS: cannot change directory error.
It turns out SELINUX was enabled in /etc/selinux/config, so I set it disabled.
SELINUX=disabled; rebooted, and was able to login. Further details instructions are here.