Creating a seamless repeating pattern is relatively easy. The easiest way to show you the concept is with a quick example. I am using Photoshop—but the concept is what is important.
It is best to start with an image with a relatively even and continuous tone. If your image has a big shadow on one side and is light on the other, it will show.
I am starting with a paper texture and selecting a small square region to create the pattern—which you can see marked:
Just to illustrate the difference—this is the texture repeated as-is:
The easiest way to make the pattern seamless is to tackle each axis separately.
First, set a vertical guide at the center of your image. Use this to make a selection and split each half of the image to its own layer. Swap the position of each half of the image—so the left moves to the right, the right moves to the left:
The left and right edges of your image are now seamless—the only problem is the center.
Use whatever method is appropriate and convenient to blend the visible join in the center. In Photoshop I used a combination of the Clone Stamp Tool and the Spot Healing Brush—I'm sure there will be equivalent tools in GIMP.
Your image now seamlessly repeats horizontally.
Repeat the process on the other axis. Make a horizontal guide in the center of your image, swap the location of the top/bottom etc.
You now have a perfectly repeating seamless pattern.
You may find that some elements don't work well within the pattern or there may be color or tone changes that are only noticeable when repeated. Simply go back to your pattern and work on any areas you see that need improving.
Note, I used a paper texture as it is easy to blend different areas—If you are working with a fabric texture with distinct fibres or other details, you may need to spend a lot more time blending the joins. The concept is the same though.
As @joojaa pointed out in comments, the Photoshop offset filter (Filter → Other → Offset) would be easier than manually duplicating/splitting and moving each section.