Grazie per la risposta!
In effetti il dubbio che il problema sia dato dal fatto che il file sia ancora in uso l'ho avuto, ma non esiste un metodo per chiudere l'oggetto File, bensì chiudo il DataOutputStream costruito sul FileOutputStream a cui ho passato l'oggetto File.
La flush viene fatta subito dopo la scrittura e prima della chiusura.

E' probabile che il problema stia proprio nel file bloccato, perchè ho provato a ridurre al minimo l'applet e in effetti la rename funziona... ma non riesco a capire perchè non vada nell'altra, il codice è praticamente lo stesso!!!

...
public void paint(Graphics g)
{
super.paint(g);
printFile();
boolean bOk = renameFile(sFileIn, sFileOut);
g.drawString("Esito: " + (bOk?" positivo":" negativo"), 25,25);
}

private void printFile()
{
File output = new File(sFileIn);

DataOutputStream dos = new DataOutputStream(new FileOutputStream(output));
dos.writeBytes(sTxtFile);
dos.flush();
dos.close();
}

private boolean renameFile(String sIn, String sOut)
{
boolean bOK = false;
File fileIn = new File(sIn);
if(fileIn.exists())
{
File fileOut = new File(sOut);
bOK = fileIn.renameTo(fileOut);
}
return bOK;
}