It depends on the particular phone.
Some phones like Motorola i730 have an option to start a program when the phone powers on.
You can put an application in the background by calling MIDlet.notifyPaused(). Usually the application continues to execute its threads on the background.
You can autostart application also by using the PushRegistry.
I haven't tried that one, but
you should check out what will happen if you don't set a screen in MIDlet.startApp(), but call MIDlet.notifyPaused() instead - this should put the application in the background immediately when it starts.