Forse non ti è chiaro come funziona l'istruzione if:
codice:
if ( condizione ) {
   ... // Se vera
} else {
   ... // se falsa
}
La "else if" è sostanzialmente l'annidamento di una istruzione if all'interno del ramo else di quella più esterna:
codice:
if ( condizione1 ) {
   ... // Se vera
} else {
   if ( condizione2 ) {
      ... // Se falsa condizione1 e vera condizione2
   } else {
      if ( condizione3 ) {
         ... // Se falsa condizione1 e falsa condizione2 e vera condizione3
      }
   }
}
Le parentesi graffe non sono necessare se e solo se l'istruzione da eseguire è atomica (ovvero, una sola riga di istruzione).

Quello che hai scritto tu non ha molto senso visto che dopo il test di una condizione il compilatore si aspetta una istruzione e tu gli dici di eseguire una else... ma una else prevede prima una if che non c'è... tradotto, quello che hai scritto tu (con le opportune graffe) è questo:
codice:
if(annoguastopc.getSelectedIndex()>annointerventopc.getSelectedIndex()) {

   else if (meseguastopc.getSelectedIndex()>meseinterventopc.getSelectedIndex()) {

      else if (giornoguastopc.getSelectedIndex()>giornointerventopc.getSelectedIndex()){

         JOptionPane.showMessageDialog(frame,"Non è possibile che l'intervento sia fatto prima che accada il guasto","Errore",JOptionPane.ERROR_MESSAGE);
         return;    
        }
che come puoi ben vedere non ha alcun senso...


Ciao.