One way I've used is to solder the wires to a row of header pins, which then acts
like a little plug - the square pins are a more positive fit into the sockets, and having
several pins together reduces the chance of things falling out.
I also use a hot melt glue gun to insulate the soldered connections.
Another approach is to use a prototyping shield to connect everything to (soldered
or some are terminal blocks). This then plugs in like any other shield. It has the
advantage that there is only one way to plug it in.
Another option is to buy an Arduino with solder pads instead of header sockets, so that you can solder wires directly to them. For example, if you click on the "Buy" link at the top of this page, you can buy a Leonardo without headers.
Yet another option is to build your own bare bones system on stripboard or perfboard (or even PCB), and program it via ICSP. This is what I normally do.
Have you thought about making a simple stand alone board for your project? Solder it all up on some prototyping/perf board and then you still have your Arduino for other projects!
Solder pins to strip board and mount the arduino upside down on the pins. You can then solder to the strip board. A small hacksaw is handy for cutting through all the tracks. Also if you make the board several holes wider than the arduino and then drill the holes out a bit, you can thread the wires up and down and then solder which give a bit of strain relief and is really secure