Change order status programmatically

Load an order using the following code:

by order id

$orderId = 1;
$order = Mage::getModel('sales/order')->load($orderId);

or by order increment id

$incrementId = 1000001;
$order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);

Change the state of the loaded order using:

$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true);
$order->save();
Following is a list a possible states:
Mage_Sales_Model_Order::STATE_NEW
Mage_Sales_Model_Order::STATE_PENDING_PAYMENT
Mage_Sales_Model_Order::STATE_PROCESSING
Mage_Sales_Model_Order::STATE_COMPLETE
Mage_Sales_Model_Order::STATE_CLOSED
Mage_Sales_Model_Order::STATE_CANCELED
Mage_Sales_Model_Order::STATE_HOLDED