Partial answer - since namesXML is declared in the <fx:Declarations> section, it is a child of your main application, and isn't instantiated until later (when all the children are created).
If you want to leave namesXML defined as you have, I'd suggest adding a creationComplete handler and setting temp at that time:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="doInit()">
<fx:Script>
<![CDATA[
import mx.collections.XMLListCollection;
var temp:XMLListCollection;
protected function doInit():void {
temp = new XMLListCollection(namesXML.children());
}
]]>
</fx:Script>
Another problem is that temp needs to be marked as Bindable - otherwise, when it gets set the changes won't cause the List to redisplay.
Finally, the XMLNode items in temp are already person nodes, so you only need to specify data.name in the item renderer:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<s:CheckBox label="{data.name}"/>
</s:ItemRenderer>