I neglected to talk about choosing fabrics for embroidery in the embroidery basics post, so created a separate post for it. A short post because you can embroider on just about anything and the end result you're going for will play a big part in determining your choice.
I mostly work on vintage stamped-for-embroidery projects so whatever fabric they're printed on is what I use. That's either linen or cotton and it usually has a weave that you can see. As a general rule, if you're doing stitches that involve counting threads then you'll want a fabric with threads that are easy to see—like linen, heavy cotton, or Aida cloth (specifically designed for counted cross stitch). If you're doing a lot of outline, lazy daisy, satin stitch, or french knots, then a fabric with a finer weave (a lightweight linen or smooth cotton) will work better. Smooth cottons work best for iron-on transfer patterns, too. I like fabrics with some crispness as they're easier to handle and stay in the hoop better without stretching and pulling. When you wash your finished project, that stiffness will usually wash out.
But, you can also also embroider on wool (try adding embroidery to a plain jane wool sweater), felt, flannel, gingham (chicken scratch embroidery), huck toweling—really, any textile that you can get a needle through.
There are linens called embroidery blanks designed specifically for embroidery—napkins, pillowcases, tea towels, and baby bibs. I buy my tea towels from Embroider This, and they have tons of other blanks for embroidering, too. I often recycle parts of linens that I've used for other projects—like if I've used the embroidered edge of a pillowcase for a pillow, I save the rest to cut up and use for other things. You can buy vintage towels at flea markets or on Ebay - the linen ones with stripes on the sides are particularly nice for embroidery.