Avrai notato che se annulli l' operazione, ti ritrovi stampato <b>null</b> perché null è il rimando del prompt.
Per non averlo, ho condizionato la function con un if-statement che lascia intervenire sulla textarea solo se il rimando del prompt (piece) è diverso (!=) da null.

function bold(){

 var area = document.getElementById("field");
 var piece = prompt('il testo inserito verrà reso in carattere \n\n\tGRASSETTO', '');

   if(piece != null){
      area.value = area.value +' '+piece+' ';
   }

 area.focus();
 }


Si continua ad avere <b></b> se si fa l' invio senza contenuto; e questo si può lasciare, potrebbe far comodo.
Volendolo invece eliminare anch' esso, si estenderà la condizione:

   if(piece != null && piece != ""){

o semplicemente anche:

   if(piece){

if piece, cioè se esiste piece.
Testati entrambi IExplorer7, FFox2 e un Netscape di qualche anno fa.