Another option is to have a camera with you everywhere you go and shoot hundreds of photos that will come in handy when you have to create your own textures. You then have to learn : when shooting them (best on cloudy days to have an even lighting on the part you shoot), how to make your textures tillable, and how to extract at least diffuse, specular and normal maps from your photo. Photoshop, Gimp, smart normal could help you to do that.
Then you can also think procedurals. The best materials you will create for a model will most of the time be a mix between photos and procedurals. Of course, if you use procedurals, then you will have difficulties for interchange, unless your bake your textures on unwrapped UVs.
So getting the base photos is only the very first and simplest step in the texturing process. BTW, read carefully the EULA if you go to a site like CGTextures. They are quite liberal, but there are rules to respect.