As duas formas estão corretas, mas têm significados diferentes, daí o cuidado na hora de aplicá-las. Em se tratando da festa em si, o correto é "amigo-secreto" (com hífen). No entanto, cada um dos participantes é o "amigo secreto" (sem hífen).
Vejamos as seguintes frases (com os empregos corretos dos referidos termos):
Amanhã acontecerá a festa do amigo-secreto.
O José é meu amigo secreto.
Já sei quem é minha amiga secreta, o que só aumentou minha ansiedade pelo tão sonhado dia do amigo-secreto.
Atenção:
O Vocabulário Ortográfico da Língua Portuguesa registra somente "amigo-secreto", mas não traz seu significado, o que não é suficiente para se deduzir que não existe a forma "amigo secreto".
O Aurélio, por sua vez, não consigna "amigo-secreto", mas "amigo-oculto" (que tem o mesmo significado).
Discutindo o verbete amigo, o referido dicionário traz "amigo oculto" (sem hífen), e aponta seu significado como sendo cada um dos participantes da festa do amigo-oculto. Logo, fica evidente a diferença entre "amigo-secreto" e "amigo secreto".
.