Die meisten Sites werden durch Fehler/Sicherheitslücken in den (PHP)-Scripten exploitet/gecrackt, wobei es im Falle von PHP auch öfters vorkommt, dass theoretisch "sichere" Scripte durch bekannt gewordene Fehler in PHP selbst unsicher werden. Z.B. könnte ich mir in deinem Falle vorstellen, dass du die geuppten Bilder mit den dedizierten Bildbearbeitungsfunktionen von PHP öffnest/prüfst, und dass du da u.U. eine Funktion verwendest, für die es in der auf deinem Server installierten PHP-Version nen Exploit gibt (mal vorrausgesetzt, dein Code ist zumindest theoretisch "sicher"). Ansonsten kommt es auch öfters vor, dass (z.T. auch wegen fehlerhafter PHP-Funktionen) z.B. Sonderzeichen in mehr oder weniger exotischen Zeichenkodierungen so missbraucht werden können, dass man damit auch Dateien mit einer eigentlich nicht erlaubten Dateiendung hochladen kann (beispielsweise 2Byte-Unicode-Zeichen, die vom Script als 1Byte-Zeichen behandelt werden, und wodurch man z.B. ein Nullbyte einschleusen kann).
Dass eine unverschlüsselte FTP-Verbindung abgehört wird, halte ich mal für seeehr unwahrscheinlich (außer er kontrolliert einen anderen Server im gleichen Rechenzentrum, und selbst dann müssen in diesem RZ noch ARP-Spoffing-Attacken möglich sein).
Sichere Passwörter sind natürlich auch wichtig, (sonst is ja alles andere für die Katz).
Falls du SSH-Zugriff hast, überprüf mal mit
last, welche Benutzer sich zuletzt von wo aus eingeloggt haben, und wenn du schon dabei bist, überprüf doch mal mit
lsof, welche Ports geöffnet sind.
Wenn ein Server nicht erreichbar ist, muss es sich nicht um eine (D)DOS-Attacke handeln, es kann auch sein dass die Kiste (oder einzelne Server-Dienste/-Daemons) schlicht abgeschmiert ist.
Was Gruselgeschichten wie eigenes CMS programmieren angeht: Lass es sein. Such dir lieber ein CMS, und schau, wieviele (rezente) Exploits und Advisories du dafür im Netz findest, z.B. bei milw0rm, Secunia, etc. Schau nach, wie viel Zeit vergeht vom Bekanntwerden einer Lücke bis zum entsprechenden Patch (meist steht sowas auch gleich in den Advisories drin, weil die meist erst veröffentlicht werden, nachdem der Software-Hersteller einen Patch bereitgestellt hat, nach dem Prinzip des
responsible disclosure).
//EDIT: Ein weit verbreitetes Script/CMS mag vielleicht mehr Scriptkiddies mitautomatisierten Scripts anlocken (die, falls du deine Installation samt eventuell installierte n3rd-Party-Plugins immer auf dem neusten Stand hältst, allerdings meist unverrichteter Dinge das Feld räumen müssen, weil das gemeine Scriptkiddie i.d.R. ja nicht an 0-Day-Exploits rankommt), aber dafür sind da auch meist mehr Entwickler am Werk, die entsprechend schneller auch bekanntgewordene Lücken reagieren können, und auch im allgemeinen oft eine professionellere Einstellung zu "Security by Design" u.ä. Programmierparadigmen haben.
Trotzdem gibt es natürlich auch krasse Negativbeispiele, wie z.B. Squirrelmail.