This is the key to this question:
The application is executed by a windows service.
Due to the way QuickBooks works, trying to connect to QuickBooks from a Windows service (e.g. a little program that sits and runs in the background instead of an end-user program with a GUI) will never work reliably.
QuickBooks uses a GUI message pump to power the SDK - so if there's no GUI available (e.g. like in a Windows service that runs even when there are no users logged on to the machine) then the SDK/API won't be available.
Sorry for the bad news. :-/
Can you make your program have a simple GUI and only run when a user is logged on (lock the screen if they need to leave the computer) instead?