If you have money CarbonCoder does this. It is very easy, drag and drop the video, check the "stitch" box and select the output format.
Else you can use ffmpeg + avisynth.
Create an avisynth script which will just read and add the different videos:
vid1 = FFmpegSource2("path_to_first_video.avi")
vid2 = FFmpegSource2("path_to_second_video.avi")
vidn = FFmpegSource2("path_to_nth_video.avi")
concat = vid1 + vid2 + .. + vidn
ffmpeg.exe -i avisynth_script.avs [ encoding options ] concatened_video.avi
In the example I used avi container, but avisynth supports also quicktime and other.
Find here the Avisynth documentation . This will work on windows, as far as I know avisynth does not work on linux ( or in alpha stage ? ).