Understanding PIC32 watchdog timer operation
After digging a little more, I think I found the answer. According to this document, the WDTCONbits.WDTPS register is just a shadow copy of the postscaler bits. To set the postscaler I had to add in my main file #pragma config WDTPS = PS512. My successful code now reads:

#define LED _LATA0
#pragma config WDTPS = PS512 // this is the magic line

/*
 * 
 */
int main(int argc, char** argv) {


    //WDTCONbits.WDTPS = 0b1001; //512ms postscaler

    WDTCONbits.WDTCLR = 1; // feed the watchdog



    WDTCONbits.ON = 1; // enable the watchdog


    TRISAbits.TRISA0 = 0; //output on RA0
    ANSELAbits.ANSA0 = 0; // digital only


    LED = 1; //led on
    int i = 100000;
    while(i--);
    LED = 0; // led off
    while(1); // hang up and let WDT reset us

    return 0;
}