In order to deface a sight...
If the hoster only offers FTP access (no shell accounts) and there is no ASP, CGI, etc way to upload or modify pages then it's only a matter of hacking the FTP server or guessing(brute forcing) the user/pass on FTP.
Of course, the admin of the FTP server should have an automatic lockout after so many failed login attempts so that brute forcing would not be an issue.
Alot of sites will have some web interface to update the site using CGI or some other language. The owner of the site as well as the admin should make sure any CGI uploading/managing utils are properly secured so that no unauthorized access can even get close to accessing these pages.
if you are hosting files on your site and want some of them secured, usually you'd put them in a passworded area of the site and prevent access to downloading of the files via permissions.
Theres a couple ways to implement passwords. One is via file system permissions and allowing users to login using their own account. This may not be an option for you with your host as alot of hosters only offer 1 user and that is the administrator of your site, you. Another would be using .htaccess in apache. I think something similar may exist for IIS. It's basically an ASCII text file that has information about users and permissions in the current folder and subfolders. Needless to say, you don't want people viewing your plain text file containing critical information, so typically access to view .htaccess and /htpass files (or all .xxx hidden files) have been blocked as a global rule in apache.. you could additionally set the file permissions so that only the server and you can read/write the file and not other users.