Да, пожалуй, напрямую никак:) По 
спецификации именем свойства может быть значение строки или символа.
Вариантов работы несколько (откуда берётся возраст, не знаю:).
По старинке (или для словарей)
var countName = [
		'Петя',
		'Вася'
	];
for (var i = 0, data = []; i < countName.length; ++i) {
	data.push({});
	data[data.length - 1][countName[i]] = {
		age: 10
	};
}
Те же шары, только сбоку
for (var i = 0, data = []; i < countName.length; ++i) {
	data.push(set(countName[i], 10));
}
function set (name, value) {
	var object = {};
	object[name] = {
		age: value
	};
	return object;
}
Или с использованием 
Object.defineProperty() (можно варьировать параметры свойства)
for (var i = 0, data = []; i < countName.length; ++i) {
	data.push(set(countName[i], 10));
}
function set (name, value) {
	var object = {};
	Object.defineProperty(object, name, {
		value: {
			age: value
		}
	});
	return object;
}