That's quite a list of requirements.
In general, MongoDB should be pretty good at storing and retrieving
your fairly large data sets (in your case, you'd probably want to
consider a sharded deployment to handle the high write volume). It
might take some headscratcing to figure out the optimal way to handle
certain aspects (e.g., for the rendering, if I understand the
requirements, you might need to incorporate some synthetic fields to
make the sampling work maximally well in MongoDB; by including
something like a random number uniformly distributed between 0 and 1
in the pixel's sample, you could query for samples whose random number
was below some threshold, on order to control your down-sampling). In
general, most of these sorts of designs details have to get worked out
on a case-by-case basis. Exporting samples should be fairly
straightforward, given suitable indexes on timestamp fields.
However, a few requirements jump out as not immediately
straightforward given what MongoDB gives you:
(0) MongoDB's index format isn't optimized for ranges over multi-
dimensional spaces (your less common use case with ranges over two
fields), but some optimizations we're planning for version 2.2 will
support improve this query pattern.
(1) you'd have to implement your authentication logic yourself, or
else put what you're calling "tests" into separate databases to rely
on MongoDB's authentication.
(2) MongoDB isn't really designed for uneven data distribution (your
model where headquarters accumulates all data gathered by all remote
sites, but remote sites don't want all the data headquarters has).
For this, you'd need your own custom ETL-like layer that loaded data
from separate deployments at the remote sites into a (presumably
larger) headquarters deployment.
(3) Similarly, there is nothing built into MongoDB that would solve
your tiering problem out of the box, so you'd have to roll that
yourself.