I found something strange happening with my two USB joysticks. One is a N64 controller with an USB adapter and the other a PSX controller with an USB adapter. Both work fine in Windows XP.
When both are connected to the PC and I start Dosbox, the console tells me that both joysticks are being used. Fine.
When I unplug the N64 one and then start Dosbox, the console does not report any joystick. Vice versa, keeping the N64 plugged in and unplugging the PSX one, Dosbox does find the N64 controller.

After some testing I finally found the solution:
In the Windows control panel open the gamecontroller control, and then click on the advance button. The window that opens asks which controller should be used for older programs.
The "preferred controller" setting probably says [none], choose the controller, click ok, exit the gamecontroller control and start Dosbox. It should now find your controller.
Possible cause of this: The first attached controller gets assigned "for older programs". When you plug in a new controller and then unplug the first one, no conroller is assigned anymore.
Weird but probably true.
This could be something for the FAQ, maybe anyone can make screenshots of those settings with an English Windows. My German one doesn't help much , I guess

I have a PSX pad (via a SmartJoy adapter) and a Saitek Cyborg. If both are connected, most games and emulators will detect the Cyborg as the primary controller, even though the PSX pad is selected as prefered device.

Went through the joystick init code of SDL, and they're using some
variable as joystick index that is always zero.
The svn of SDL has a fix for this actually since mid of 2006 (past their
1.2.11 stable release though). Maybe you could test if a SDL compile
of the newest 1.2 sources really fixes the problem (it should).