The man, who was not identified, was arrested for the murder, which occurred Wednesday night aboard a bus traveling from Edmonton, Alberta, to Winnipeg, Manitoba, The Royal Canadian Mounted Police said in a statement.
Authorities also declined to name the victim and provided no other details about the attack.
Passenger Garnet Caton said the victim was stabbed 40 or 50 times by the man sitting next to him. The passenger then allegedly severed the man's head with a large knife and held it up by the door for others to see.
"We heard this bloodcurdling scream and turned around, and the guy was standing up, stabbing this guy repeatedly, like 40 or 50 times," Caton said from a hotel in Brandon, Manitoba, where he and other passengers had been taken to rest.
Caton said the bus stopped and the passengers scrambled to disembark while the suspect allegedly began methodically carving up the man's body.
"When he was attacking him, he was calm ... like he was at the beach," Caton said. "There was no rage or, or anything. He was just like a robot stabbing the guy."
Caton said he, the bus driver and a trucker at the scene re-boarded to see what was happening.
Caton said he saw the suspect had the victim on the floor of the bus and "was cutting his head off and pretty much gutting him."
He said they quickly disembarked and braced themselves against the door to prevent the attacker from leaving while they waited for police to arrive.
"We put our bodies up against the door, waiting for him to come out ... and he went back and brought the head to the front and pretty much displayed it ... and dropped it on the ground in front of us," Caton said.
Fellow passenger Cody Olmstead told Brandon radio station CKLQ that the man "dropped the head and went back and started cutting the body back up."
Greyhound spokeswoman Abby Wambaugh said 37 passengers and one driver were on the bus.
The victim, who Caton said appeared to be about 19, had been on the bus since Edmonton. He said the attacker boarded the bus around Brandon, Manitoba, about 80 miles west of Portage La Prairie.
The suspect had been on the bus for about an hour and didn't even sit near his victim at first.
"He sat in the front at first, everything was normal," Caton said.
"We went to the next stop and he got off and had a smoke with another young lady there. When he got on the bus again, he came to the back near where I was sitting.
"He put his bags in the overhead compartment. He didn't say a word to anybody. He seemed totally normal. About a half an hour later, we heard this bloodcurdling scream."
Public Safety Minister Stockwell Day called it a "horrific" incident, but did not discuss details of the attack, saying he did not want to jeopardize the investigation.
"We want to make sure that the process is followed as aggressively as possible, a full legal process, and the perpetrator is definitely dealt with the full force of the law," he said.
Day called it bizarre and extremely rare.
"The horrific nature of it is probably one-of-a-kind in Canadian history," Day said.