Perchè usi l'operatore di preincremento quando puoi semplicemente usare quello di postincremento... cmq devi fare il casting:

prova così:

#include <stdio.h>

typedef enum stagioni_t
{
autunno,
inverno,
primavera,
estate
};

int main (void)
{
stagioni_t stag;

for (stag = autunno; stag <= estate; ((int)stag)++)
{
printf ("%d\n", stag);
}
return 0;
}