If it only happens to the dial-in users, it looks like a time-out issue (too common with dial-up connections). I'm surprised you have to re-publish the applications, though - do users access them through Application sets in Program Neighborhood?
First check with your ISP that there are no timeout settings that may be adversely affecting your users - this is the most common cause of dial-up users losing connections, and other odd remote behaviours.
Try editing the following keys on the server, if the ISP has no timeouts set;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\ParametersTcpMaxDataRetransmissions = 10 (REG_DWORD - if this key doesn't exist, you'll have to manually add it)
If you're already running MetaFrame SP2 or greater, these next keys should already be enabled. With XP, this is built in, but disabled by default. Prior to SP2, you'll have to manually add them (upgrade to SP3, if you can

)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\IcaEnableKeepAlive = 1 (to enable).
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\IcaKeepAliveInterval: (Add a number in seconds - the default is 60)
Also check out Q120642 and Q170359, which may have some bearing on this.
I hope this helps