Weil du mit bla == blub || foo || bar nicht überprüfst, ob bla gleich blub, foo oder bar ist, sondern ob bla==blub ist, ob foo==true ist oder ob bar==true ist.

Bei dir überprüfst du dem entsprechend zum Beispiel ob 'image/gif' wahr ist. Nicht-leere Strings sind immer wahr, ergo wird dein if() immer ausgeführt.

Das was du willst ist
PHP-Code:
if($_FILES[file1][type] == 'image/bmp' or
   
$_FILES[file1][type] == 'image/gif' or
   
$_FILES[file1][type] == 'image/jpeg' or
   
$_FILES[file1][type] == 'image/png')
{
  
$upload[path] .= 'img/';