It is an engine problem: some engines are buggy and simply refuse to shut down after receiving the quit command. Unfortunately the mechanism of killing other processes (which WinBoard attempts) does not work reliably on Windows.
What I usually do if I work with buggy engines, is this:
1) Download the pv.exe utility. (
http://makemsi-manual.dennisbareis.com/pv_exe.htm ) This can kill a process by name of the executable. Put it in the PSWBTM folder.
2) Create a file aftergame.txt in the PSWBTM folder, on which you write one line:
pv -k ENGINE.exe
for every engine that tends to hang. PSWBTM executes every command in aftergame.txt after each game, (so you can also put a command to update your cross table there), and this cleans up any hanging engine process.
There is only one snag: when you do this, you cannot run the same engine in two tourneys simultaneously, unless you make a copy of the executable and rename it, otherwise cross-kiilling might occur.