Oi Thais,
A sua função criaImagem está alocando a matriz corretamente.
Para ver isto escreva no main
/** cria arquivo imagem im **/
im = criaImagem(altura, largura);
salvaImagem(argv[2], im);
e remova o salvaImagem do final do main. Depois de compilar
e executar o seu programa veja que ele criou uma imagem corretamente. Tem umas outras coisas,
mas a imagem esta senod criada corretamente.