Is there any criteria which outputs are chosen for a 'mixin' in a transaction?
You must choose mix inputs of the same amount as the one you are spending. Other than that there are no restrictions, though it's not a good idea to choose a really recent output (less than 10 blocks old -- you'd also have to modify the daemon and/or wallet to do so).
The wallet currently chooses outputs as follows: 25% are chosen randomly from "recent outs", presently the last five days; the remaining 75% are chosen from older outputs using a triangular distribution. You can see the math starting here.
More research is needed to find a better method/better parameters (there is some doubt an ideal method actually exists).