RCMP arrested the 39-year-old man, originally from Edmonton, Thursday and brought him back to the city to face the charge, though no court date has yet been set.
"We hope by announcing charges today that this will give some degree of closure to the victim's family and friends," said RCMP Supt. Gary Steinke.
The remains of Shannon Maureen Collins, 29, were located June 2008 in a wooded area of the Belvedere Heights subdivision, east of Edmonton.
A resident called police after he noticed one of his dogs was carrying a human skull. A search of the property by search dogs located additional remains.
Collins was reported missing to Edmonton police by her family three months after the remains were found. At that time she had not been seen by her family for nine months.
RCMP said Collins had been living a high-risk lifestyle, though they don't believe she was working as a prostitute.
Collins and the suspect knew each other, said police.
Police would not release the cause of death.