A while back there was an external Team Fortress 2 idle program. It was public and that lead to it's users being punished by the game developer.
However a private idler would not have this problem. What it needs to do is use the Steam Interfaces (like Open Steamworks) to "connect" a user to a servers without starting the game.