controlling c# game using arduino buttons

Just don't use a background worker for the first version. You need to make it simpler. DoWork runs in a thread different than the one handling UI stuff, you can't make threads talk safely without something else (InvokeRequired and callbacks) and the worker will eat the exceptions making exe complex to debug.

If you have visual studio 2010, use IntelliTrace (set it to record all calls) to find the problems.