I have found that it helps a lot if you put the names of the machines on your network in the hosts and lmhosts machines on all of the computers on your LAN. Here is an example. One XP machine named xp01 and one Samba server named samba01.
Subnet: 192.168.1.0
Domain suffix: my.place
xp01 address: 192.168.1.3
samba01 address: 192.168.1.10
XP machine
\windows\system32\drivers\etc\hosts
Code:
192.168.1.10 samba01.my.place samba
\windows\system32\drivers\etc\lmhosts
Code:
192.168.1.10 samba01 #PRE
Samba server
/etc/hosts
Code:
192.168.1.3 xp01.my.place xp01
/etc/samba/lmhosts
Code:
192.168.1.3 xp01 #PRE
That solved a lot of problems for me. Also, I found that I have to restart the Windows machines after I restart Samba.
On the Windows machines make sure that the firewall is set to allow file sharing ports through.