The Cypress Board was designed for this, but the USB driver for it is a little iffy with some laptops.
You could also use
this, which is new for this year.
The simplest solution is to take apart a joystick and connect your own buttons/pots instead of the ones in the joystick. We did this last year for testing, and it worked really well.
The arduino is a little tricky to do, because the driver station will only transmit data from a cypress board or a USB HID joystick, so you could write your own program that reads from the arduino (through serial over USB) and transmits the data to the robot on one of the unblocked ports. If you wanted to write a separate program that runs on the driver station laptop to transmit the data in java, you'd use the RxTx java library.
Or you could use
this to make the arduino act as a USB HID device which can be recognized by the driver station. This is weird because you first load a sketch as normal, then you have to put the controller in DFU mode and reimage the communication chip to act as an HID device. This is the sort of stuff that can really mess up the arduino, so be careful.