First of all, I think the reason the follow path constraint stops is because it appears you have breaks in your curve after every repeated segment.Hard to say form the images alone though. If that is the case, since there is no merge option for curves, then select both points, fill them with F and scale them to 0. Then select one point, delete it, and use the dissolve vertices option. This will merge the two points, which should fix your issue.
As Mr Zak mentioned, the Extra objects addon has a Z Math surface, and by using the two middle loops and collapsing them into one, we get a perfect sine curve. This can be duplicated and flipped, then using vertex snapping it can be aligned with the first section. Once you have one wave, it can be duplicated as many times as necessary, then the doubles removed with W, and converted to a curve with Alt+C.
I would suggest an alternative though, one that would give you much more control. This may or may not work depending on your exact situation, but if all you want is motion along a sine curve along one axis only than this will work great.
First, animate your object along the axis you want it to travel. In my example I will use a simple mesh arrow so we can easily see where it is pointing, and I will have it move along the X axis. I animated it to move 10 units in 100 frames. Animate your object using the LocRot keyframe, so that we will have access to the location and rotation curves. The rest will all be done using the graph editor.
Here is where I'm at so far:
The first step is to change the interpolation type on the X location curve to be linear, so that it moves with uniform motion, instead of accelerating then decelerating. So we can select the curve, press T and choose linear. This should give us a nice straight line.
Now, in order to get our object to move along a sine curve, we need to modify the Z location and the Y rotation. To do this, we will use the modifiers in the Graph Editor. Open the properties Panel in the Graph Editor with N and choose the modifier tab. Now select the Z location from the list on the left, and add a Built-In Function modifier. The default function is Sine, so we could call this done, but the frequency of the wave is pretty high, so we can turn that down with the Phase Multiplier option. I set it to .1 so that it has nice smooth motion.
Here are the setting so far:
The final step is to add a sine function to the Y rotation curve. So lets select that one and add the modifier. Make sure you copy all of the setting from the Z location modifier to the Y rotation one, otherwise they will be out of sync. Since we are dealing with rotation though, the same amplitude will result in a much taller wave, which is what we want. In my case, all I had to change was the Phase Multiplier. Is you play the animation, it won't look right, and that is because we need to offset the Y rotation curve. Since we want the object to have no rotation and the peaks and troughs, and have the maximum rotation while halfway in between, we will need to offset the curve by pi/2, or approximately 1.571 (this is what blender rounds it to). Depending on the rotation of your object as well, it may have to be negative. One you set the Phase Offset to that value, we are finished.
Here's the Y rotation curve and modifier:
And here is the final result: