You should be able to debug it while it runs as a service. Start a debug version going as a service, start up Visual Studio, go to build\start debug\attach to process... menu .
Then on the dialog click the "show system processes" checkbox and select your service.
then you can break into it and look at the return codes while it's running to spot the problem.