Aside from these obvious choices one of the best places to find seed is from your gardening friends! Gardening fanatics collect seed like baseball fans collect baseball cards. Rare seeds are met with the same excitement as a rare Mickey Mantle card found in an old shoebox in the attic, but any seed that you like is a great find! A quick search online with Google will find all sorts of seed swapping forums where you can find nearly anything you're looking for if you look long enough.
Just recently I made a donation to the American Horticultural Society to participate in their seed swap. You can donate what you wish but with a small donation of $5 you can get 10 varieties of seeds. If you do the math that comes to $.50 for each packet, a deal you just can't find in stores. These are all seeds that other gardeners around the country have gathered and sent in as donations. With that donation I should receive seeds from the following plants:
Panicum virgatum (a native Switch Grass)
Cleome hassleriana (Spider Flower)
Cosmos bipinnatus (2 varieties)
Zinnia elegans (8-10 inch zinnias)
Zinnia linearis (6-12 inch zinnias)
As alternates I chose an Amaranthus caudatus (Love Lies Bleeding) and another type of Cleome hassleriana. I try to find my seeds through seed swaps and trades before I go searching the catalogs. This helps me to keep the cost of seeds down a little. After all, I have to have money to buy more plants for the garden!
I prefer to purchase vegetable seeds from the stores as home collected seeds have a greater chance of hybridization through cross pollination. Of course you might end up with an interesting specimen that way. One year a tomato plant grew from our compost bucket on the back porch. As an experiment we planted it in a pot and let it bear fruit. The tomatoes were some of the best we had that year but they sure looked strange! I think they were a cross between a cherry tomato and a slicing tomato.
There are lots of options for finding seeds and you don't always have to go to the stores!