I was experimenting in GIMP this morning and came up with the following technique for creating really nice looking tapered rivers in the GIMP.
I'm going to assume you already have a map up and ready to use this on. You can use this on black & white or colour maps.
Here's my example map, showing what I started with. Ignore that gap in the coastline - that's where I inserted my river.
1. Create a new layer and name it "Rivers".
2. Select the paintbrush, set the colour to black and choose the circle brush. Choose a size that suits the dimensions of your map, but remember that the original river width is going to increase just a little further along in this tutorial.
3. Turn off all brush dynamics and check the Fade Out box. Again, depending on the size of your map, you'll want to set the fade value to different values. My example map is pretty huge (4230 x 2830) so I set the fade to 4000.
4. Now, draw a rough river shape from your coast to wherever (mountains preferably) or visa-versa. Make it as windy or straight as you like, depending on the geography of your world or your personal preference. You'll notice that the paint fades out near the end, creating a sort of tail effect.
5. Select the magic wand (fuzzy select tool) and leave all the values default, except Threshold - set this to 5 or thereabouts.
6. Click anywhere on your map (still in the Rivers layer), making sure you don't actually click on the river lines you drew.
7. Invert the selection (Select >> Invert) and Clear what you've drawn (Edit >> Clear). Don't panic, we're not getting rid of your hard work! Once you clear the line, you'll be left with a nice selection with tapered ends.
8. Now, we want to create a border around our river shape. (Select >> Border) I set the pixel size to 2, but you may want the border thicker or thinner. Fill the border with black paint (Edit >> Fill with FG Colour) - make sure that the foreground colour is actually set to black first.
At this point, your image should look something like this:
9. Next, select the bucket tool and fill the insides of your river's border with whatever colour you're using for your water/sea. TIP: Because I use a textured background for all my maps, I set the fill opacity to about 20.0 and the texture still shows underneath.
10. One of the final things to do is to connect up your river to your sea, by erasing any black lines at the river's mouth that aren't part of the coast.
11. Finally, I like to add a Gaussian Blur to the river's border, as it blends it with the rest of the map. Use the magic wand to select the black border of your river, go to Filters >> Blur >> Gaussian Blur. Set it to around 5 pixels horizontal and vertical and click OK. You can increase/decrease the blur effect as you prefer - I think it looks better when it's understated.
You're done! If you want wider rivers, use a thicker brush for the initial drawing.
Here's my finished river:
There are other techniques you can apply to rivers, say to create waves/ripples in the water or add rocks and debris, but those aren't for this time If you're wondering about where I got my map's "paper texture" from - I created it myself.