boneless:
I think WordPress is trying to organize your upload by Year/Month. When you said your "files" folder is already 777, how do you know so? In a UNIX-based system, if a directory (or folder) has a permission of 777, that means everyone on the system is able to make changes in that particular folder. So i am not really sure why WordPress is not able to create the sub-folders under "files".
If you are only accessing the system via FTP, i do not think it is possible to change the ownership of the directory (folder). But if you can somehow access the system using either telnet or ssh, this is how you change ownership:
chown webuser.webuser files
This will change the ownership of the "files" directory to be owned by the "webuser" user, and the "webuser"group.
I am not familiar with any web servers running on windows system, but if your web server runs on a UNIX-based system, and your web server software is Apache, then it is possible to find the owner of the web server processes by doing this:
ps -ef |grep httpd
You might see this:
# ps -ef|grep httpd
root 1911 1 0 Jan18 ? 00:00:01 /usr/local/apache2/bin/httpd -k start -DSSL
web 19049 1911 0 Jan23 ? 00:02:24 /usr/local/apache2/bin/httpd -k start -DSSL
web 19059 1911 0 Jan23 ? 00:02:25 /usr/local/apache2/bin/httpd -k start -DSSL
web 19062 1911 0 Jan23 ? 00:01:17 /usr/local/apache2/bin/httpd -k start -DSSL
web 25455 1911 0 Jan23 ? 00:01:09 /usr/local/apache2/bin/httpd -k start -DSSL
web 25480 1911 0 Jan23 ? 00:00:47 /usr/local/apache2/bin/httpd -k start -DSSL
web 5337 1911 0 10:45 ? 00:00:16 /usr/local/apache2/bin/httpd -k start -DSSL
web 5338 1911 0 10:45 ? 00:00:15 /usr/local/apache2/bin/httpd -k start -DSSL
web 5339 1911 0 10:45 ? 00:00:15 /usr/local/apache2/bin/httpd -k start -DSSL
web 6797 1911 0 12:41 ? 00:00:18 /usr/local/apache2/bin/httpd -k start -DSSL
web 6798 1911 0 12:41 ? 00:00:11 /usr/local/apache2/bin/httpd -k start -DSSL
web 6818 1911 0 12:43 ? 00:00:10 /usr/local/apache2/bin/httpd -k start -DSSL
web 6819 1911 0 12:43 ? 00:00:11 /usr/local/apache2/bin/httpd -k start -DSSL
web 6832 1911 0 12:43 ? 00:00:12 /usr/local/apache2/bin/httpd -k start -DSSL
web 6839 1911 0 12:44 ? 00:00:10 /usr/local/apache2/bin/httpd -k start -DSSL
web 6845 1911 0 12:44 ? 00:00:11 /usr/local/apache2/bin/httpd -k start -DSSL
The first column is the owner of the httpd processes. You see the first process is owned by the "root" user and everything else is owned by the "web" user.
The "chown" command might not work if you do not have root privileges.