Non funziona per vari motivi. Primo: usi this all'interno della funzione. This è una parola chiave che serve a riferirsi all'oggetto da cui "parte" un'istruzione. Ovviamente, this ha senso se inserito in un'istruzione "in linea" all'interno dell'oggetto stesso, altrimenti, come nel tuo caso, fa riferimento alla funzione, la quale non è l'oggetto che possiede la proprietà checked. In sostanza, al posto di this, devi fare esplicitamente riferimento all'oggetto checkbox che ti interessa (magari passandolo alla funzione tramite name o id).

Nel codice che ha postato lucalucius, this è riferito all'oggetto <input type="checkbox"> in cui l'istruzione JavaScript è inserita e richiamata con onclick, e quindi funziona. Questo perché quando clicchi sulla casella (evento onclick), JavaScript sa che è l'oggetto "casella di controllo" su cui hai cliccato a scatenare l'evento. Ma nel tuo caso non può funzionare, perché this si riferisce all'oggetto funzione.

Inoltre, passi alla funzione un argomento "id", ma cosa rappresenta? Perché poi scrivi: form1.elements[id].value == '';. Questo presuppone che id sia un numero intero >=0, perché l'array elements del form contiene gli n campi del form, numerati in ordine di apparizione nel codice da 0 a n-1.
Se invece quell'id è il valore dell'attributo id del checkbox che controlli, devi impostare il suo value con:

codice:
document.getElementById(id).value = '';
Nota che in questo caso, document è obbligatorio (lo sarebbe sempre in realtà, anche se alcuni browser riescono ad interpretare ugualmente. L'unico oggetto davvero facoltativo, ma non sempre, da indicare è window)! Altra cosa: prima avevi scritto "form1.elements[id].value==...". Per impostare la proprietà value di un oggetto devi usare il segno "=" (assegnazione), non "==". Quest'ultimo non è l'operatore di assegnazione, ma quello di confronto e serve a verificare una condizione (che restituisce sempre un valore booleano).