Create app/code/local/Namespace/Module/etc/config.xml file and add below code
<events>
<checkout_onepage_controller_success_action> <!-- identifier of the event we want to catch -->
<observers>
<checkout_onepage_controller_success_action_handler> <!-- identifier of the event handler -->
<type>singleton</type> <!-- class method call type; valid are model, object and singleton -->
<class>createcustomer/observer</class> <!-- observers class alias -->
<method>Aftersuccess</method> <!-- observer's method to be called -->
<args></args> <!-- additional arguments passed to observer -->
</checkout_onepage_controller_success_action_handler>
</observers>
</checkout_onepage_controller_success_action>
</events>
Create app/code/local/Namespace/Module/Model/Observer.php file and add the below code.
<?php
class Namespace_Module_Model_Observer
{
public function Aftersuccess(Varien_Event_Observer $observer)
{
$orderIds = $observer->getData('order_ids');
foreach($orderIds as $_orderId){
$order = Mage::getModel('sales/order')->load($_orderId);
$storeId = Mage::app()->getStore()->getId();
$store = Mage::getModel('core/store')->load($order->getData('store_id'));
$websiteId = $store->getWebsiteId();
$billingaddress = $order->getBillingAddress();
$customer = Mage::getModel('customer/customer')->setWebsiteId($websiteId);
$customer->loadByEmail($order->getCustomerEmail());
if(!$customer->getId()) {
$customer = Mage::getModel("customer/customer");
$customer ->setWebsiteId($websiteId)
->setStore($store)
->setFirstname($billingaddress->getFirstname())
->setLastname($billingaddress->getLastname())
->setEmail($billingaddress->getEmail());
try{
$customer->save();
}
catch (Exception $e) {
Zend_Debug::dump($e->getMessage());
}
$address = Mage::getModel("customer/address");
$address->setCustomerId($customer->getId())
->setFirstname($customer->getFirstname())
->setMiddleName($customer->getMiddlename())
->setLastname($customer->getLastname())
->setCountryId($billingaddress->getCountryId())
->setRegionId($billingaddress->getRegionId()) //state/province, only needed if the country is USA
->setPostcode($billingaddress->getPostcode())
->setCity($billingaddress->getCity())
->setTelephone($billingaddress->getTelephone())
->setFax($billingaddress->getFax())
->setCompany($billingaddress->getCompany())
->setStreet($billingaddress->getStreet())
->setIsDefaultBilling('1')
->setIsDefaultShipping('1')
->setSaveInAddressBook('1');
try{
$address->save();
}
catch (Exception $e) {
Zend_Debug::dump($e->getMessage());
}
}
}
}
}

