How to Increase the Resolution of analogRead()! (from 10-bits up to 21-bits)

As the application note AVR121 clearly states, under certain conditions, even in theory this procedure cannot extend the resolution. Yet it should give at least the same result as the 10 bit measurement. However, according to Mike's Ultra basic demo results, at 1.0 volts input (nowhere near the lower bound of the measurement range) it isn't even close.

...
14 bits - 0.2468V
15 bits - 0.493V
16 bits - 0.98665
...

Your "constrained noise" proposal cannot explain these observations.

In looking through the code, I wonder about the wisdom of the "right shift" operation recommended by the AVR121:

for (unsigned long j=0; j<oversample_num; j++)
{
inner_sum += analogRead(analogPin); //take a 10-bit reading on the Arduino ADC
}
unsigned int reading = inner_sum >> rightShift; //see AVR121 Application Note; this converts the analogRead into the higher-bit resolution reading
reading_sum += reading;
}

This is an integer division that drops the lowest bits of inner_sum and AVR121 does not give a theoretical justification for doing so. This ALWAYS results in rounding the result down, which seems unlikely to be correct. To properly round an integer division, one uses procedures like those discussed here: c++ - Dividing two integers and rounding up the result, without using floating point - Stack Overflow