The site cgtextures has lots of good textures. If you don't pay, you can download up to 15MB per day for free, and there are some sizes of texture you can't get, usually the biggest sizes, which are not as useful for games, rather for cg rendering. Usually you can still get the ones around 1024x1024, but bigger than that are the ones you can't get for free. They have pretty cheap memberships as well if you need things bigger and want to lift the daily 15MB limit.
As far as making textures yourself, I recommend you maybe learn to do it yourself. The filters in software like the GIMP help, but sometimes you can get away with 3d renders in Blender as well, though you get mixed results depending on how good you are at producing models.
I don't know off the top of my head, but there are books you can buy that teach how to make textures. There was one that I had checked out from a friend that had some good techniques. Some tricks were to take photos of real world objects and combine them to get other things, using different layering techniques, masking, coloring, and other things in the GIMP or photoshop. You could take a sand texture and cover it with a masked cage or something like it, turning grayish the sand(maybe blurring it too) to maybe get a sort of sci-fi-ish metal. Different ways to combine textures can get good results. You can also use one textures colors turned to only grays to create a layer to recolor the layers below, for example to darken or lighten, to modify saturation, or even to shift hues. This, combined with cloud filters for masks(or other filters as well, or even combinations) can get interesting results too.