These steps are for The GIMP, for making images seamless horizontally. You can guess the steps to make a vertically seamless image easily from this.
1) Open the image in GIMP . (Lets call the default layer the "base")
2) Select and copy the left 1/3rd of the "base" layer.
3) Paste it in a new transparent layer (let us call it "left on right") at the right 1/3rd of the image
4) Select and copy the right 1/3rd of the "base" layer.
5) Paste it in a new transparent layer (let us call it "right on left") at the left 1/3rd of the image
7) Select the "blend" tool - use the "Foreground to background" gradient, linear blend mode.
(make sure the 2 colors are black and white)
8) On the layer mask of "right on left" layer, draw a gradient from exactly 1/3rd of the image, all the way to the left boundary of the image.
9) On the layer mask of "left on right" layer, draw a gradient from exactly 2/3rd of the image, all the way to the rightmost boundary of the image.( or you can also copy "right on left"'s mask and paste it on "left to right"'s mask and flip it horizontally)
10) Flatten the image (if necessary.. I haven't)
11) Crop away 1/6th of the image from left and right each.
With these, the image will now be seamless horizontally, retaining the nature of the image vertically.
You can use other portion sizes too instead of 1/3rds and 1/6ths if you have got the logic.