Automatic Disconnect from ISP

You could try this stay-open script. (Save it as an application, checking the ‘Stay open’ box.) As it stands, it does nothing for five minutes, then checks every 30 seconds to see if any of the specified Internet applications are open. If not, but the Internet connection is, it disconnects and then quits itself. Obviously you can adapt the timings and the names of the applications to suit yourself.

-- Change these names as required
property myInternetApps : {"Claris Emailer", "Netscape Navigator™", "YA-NewsWatcher"}
global justOpened
on run
set justOpened to true -- a 'first time through' flag for the idle handler
end run
on idle
if justOpened then -- do nothing, come back in five minutes
set justOpened to false
return 5 * minutes
-- Are any of the Internet applications open?
tell application "Finder"
get (first process whose name is in myInternetApps) as list
end tell
-- If not but the connection's open...
if the result is {} and the state of (RA status) is "Connected" then
-- ... disconnect and quit
RA disconnect
end if
-- Otherwise check again in 30 seconds
return 30
end if
end idle