Here's the pitch. I have a collection of Circles which have mainly two attributes: location is a Point and radius is a distance in meters.
Users also have a profile.location Point attribute.
In my publications, I want to find all the Circles that the user is "in", ergo the ones he or she is near enough according to each Circle's radius attribute. To sum it up, here's how it would look like:
Meteor.publish('circles', function() {
    var curUser = Meteor.users.findOne({_id:this.userId});
    if (curUser) {
    return Circles.find({
        location: {$near: 
            {$geometry:curUser.profile.location,$maxDistance:self.radius} // HERE
        }
    }));
    }
    this.ready();
});
Except self.radius is a completely made-up term on my behalf. But is it possible to achieve something like this?
POST-SOLVING edit:
Thanks to Electric Jesus, I have my matchings working perfectly with polygons, since circles are not GeoJSON types as of yet. (therefore they are not single attributes that can be queried, sort of) So I converted my circles into polygons! Here is a JavaScript function to do this:
function generateGeoJSONCircle(center, radius, numSides) {
  var points = [];
  var earthRadius = 6371;
  var halfsides = numSides / 2;
  //angular distance covered on earth's surface
  var d = parseFloat(radius / 1000.) / earthRadius;
  var lat = (center.coordinates[1] * Math.PI) / 180;
  var lon = (center.coordinates[0] * Math.PI) / 180;
  for(var i = 0; i < numSides; i++) {
    var gpos = {};
    var bearing = i * Math.PI / halfsides; //rad
    gpos.latitude = Math.asin(Math.sin(lat) * Math.cos(d) + Math.cos(lat) * Math.sin(d) * Math.cos(bearing));
    gpos.longitude = ((lon + Math.atan2(Math.sin(bearing) * Math.sin(d) * Math.cos(lat), Math.cos(d) - Math.sin(lat) * Math.sin(gpos.latitude))) * 180) / Math.PI;
    gpos.latitude = (gpos.latitude * 180) / Math.PI;
    points.push([gpos.longitude, gpos.latitude]);
  };
  points.push(points[0]);
  return {
    type: 'Polygon',
    coordinates: [ points ]
  };
}
Here you go. I don't really know how many sides I should use, so I left an argument for that too. From there, you can use Electric Jesus's answer to get where I was going. Don't forget to put a 2dsphere index on your polygon!
Circles._ensureIndex({'polygonConversion': "2dsphere"});