$_POST essendo una variabile superglobale e' sempre settato. Credo sia meglio se utilizzassi empty(), anche perche' se l'indice fosse settato ma la variabile vuota il riscontro renderebbe TRUE con isset() e dovresti fare un doppio controllo "se settato AND che non sia vuoto".

Con empty risolvi tutto in una botta sola. In alcune versioni precedenti di php in caso indice inesistente ti avrebbe reso un NOTICE, ma nelle versioni correnti di php (>= 5.0 ) questo non succede piu'.

if (!empty($_POST['nome']) && !empty($_POST['cognome']) && ... )...