1) select campo from tbl
recupera il valore di campo nella tabella tbl mentre
select 'campo' from tbl
recupera la stringa 'campo': devi usare i backticks (gli accenti), non gli apici singoli
2) se non esiste un nick associato a quella id, non esiste nemmeno una email nella stessa tabella, quindi è inutile rieseguire la stessa query sulla stessa tabella con la stesso id, avresti lo stesso risultato
nel caso nick sia NULL (che probabilmente è quello che intendi con nick non esistente), basta modificare la query così:
select ifnull(nick,email,nick) as value from iscritti
(questo lo esegui solo se $campo = 'nick', altrimenti fai la query normale)
3) prova il codice che ti ho postato io (più pulito), poi dimmi