From the comment about the data being rejected if the light is below a certain intensity, does this correspond to why you have missing records? Because if you do, then you do not have total "missingness", but rather "censoring" because you know that the response is below a certain threshold. This does have an impact because the likelihood function becomes a product of the density functions for those observed value, and a product of the cumulative density functions for those values which were "rejected". I would say that this is a case of the data being "Not Missing At Random" (NMAR). Basically this means the cause of the missingness is related to the actual value that is missing, which in this case, the value is below a certain threshold.
One thing I find interesting about NMAR is it often comes across as a "bad" thing. My view is that it is actually a good thing (from a statistical point of view) because you haven't completely lost the record, it is still giving you some information. The only bad thing is that the "standard" mathematics usually don't work as elegantly, and standard software can't be used as easily. You just need to work harder to extract the information.
Another thing you make reference to is the "mean intensity" of the light. It seems odd to talk of "mean" when referring to a single measurement. Or is this the mean of the light over the area of the spot?
Survival analysis with censored data may be a useful place to start, since this is a similar problem mathematically. It may be a bit of a hurdle to "translate" the survival application into a relevant one for your analysis.
My advice would be to start simple, and build complexity as you go. It seems as though you have already done this a bit (by excluding the demographic data initially).
One way to do this is to do a simple one-way ANOVA only using complete cases with the classification over the 25 sites. one-way unbalanced ANOVA is quite easy to implement (but not as a regression! lack of balance makes ANOVA different from its standard regression representation!). It resembles the two sample t-test with different sample sizes.
Another option is to analyse the data 2 body sites at a time using complete "paired" cases. This would give you a kind of "ordering" of the body types.
This analysis is all of the "exploratory" type, because it essentially "throws away" part of the information in exchange for a more simple view of the data.
It does seem as though this would be quite an involved analysis to take all of the information into account (particularly the censoring). The multi-level approach suggested by @BR would be a useful approximation to this (by "throwing away" the threshold information). The multiple imputation approach suggested by Christopher Aden is another way to go, where you get the advantage of the easier to understand ANOVA, while properly taking account of the uncertainty due to missing values.