Você pode fazer isso usando tarefas agendadas.
Use o gatilho On connection to user session
para executar um script em lote contendo NET START [Service Name]
Use o gatilho On disconnect from user session
para executar um script em lote contendo NET STOP [Service Name]
Mais informações sobre os acionadores aqui: link
Você deve ser capaz de definir as tarefas para serem executadas em uma conta que tenha permissões para iniciar / parar serviços, para que você não precise elevar os privilégios de seu usuário.
EDITAR OS SEGUINTES COMENTÁRIOS E ATUALIZAR A PERGUNTA:
Use o gatilho At log on
para executar NET
com START [Service Name]
como o parâmetro
Use o gatilho On an event
(configurações personalizadas, ID do evento 4647, logoff iniciado pelo usuário, para o usuário) para executar NET
com STOP [Service Name]
como o parâmetro