it's not really a matter of an easy way or a hard way ... terms like that are defined by the skill level of the person working on the project, and how complicated they want to make something :wink:
an easy solution for me would involve taking a pic with built in USB (pic18f12xx or 24xx), and adding some latch drivers to it ... using serial load latch drivers, I could have a huge number of outputs... think 15x octal latches off each of the PIC's 18 or so IO ports... that's 270 outputs!
I would communicate with the pic using rs232 emulation (performed by a windows driver, supplied free from Microchip). A simple visual basic application, using the MSCOMM control would send commands to the PIC, telling it to turn on or turn off different outputs.
Then comes the hard part ... how complex do I want to make the interface between the PC and the PIC? I could have the PC do everything, and just send the pic 8, 16 or 32 bit values, representing the on/off condition of all the outputs. On the other extreme, I could have the PIC emulate some sort of text based menu system, a user inteface if you want to call it that. The status of each pin could be controlled using plain text english commands like "turn on output16". This is all software programming - the hardware is easy in comparison.
Without knowing more about your application, no one can really help you come up with a good solution.