the level of CO2 is dependant on a few things. but the room level will be elevated with occupancy.
This has been used by building automation companies for decades.
if you have a motion detector, that will react qucikly. but, once you stop moving, you are still expiring CO2 so the room level will increase
the level will be dependent on the HVAC system, if it is forced air, then the level will be lower than if it is floor or baseboard heaters.
I recall having seen a "human detector" on Sparkfun recently. Maybe that is suitable for your project.
Another option: break beam sensors in the doorways (to see if anyone passes), plus motion detectors inside the room.
The break beam sensor tells you if someone is in the doorway (going in, going out, or just standing there trying to remember which way they were going - doesn't matter).
Then you have a motion detector in the room. If you detect motion in the room the break beam sensor is not triggered any more, someone is in the room. Even if you stop detecting motion, that someone is still in the room. Only if your break beam sensor is triggered again (someone in the doorway) you have to check for motion.
If there could be more than one person in the room that still won't work very reliably though - the remaining person may be so motionless that the motion detector thinks there's no-one left.
Since the 60's ultrasonic detection has been used in big stores when no one is inside. I know because I could hear it, they'd leave the sound on all the time at the Darien Bradlees. I got the manager to turn it off once.
It works by sending out LOUD ultrasonic waves and reading the interference pattern that returns. Any change causes alarm. The sound frequency determines how small a move will be detected.
Who will sit completely motionless in a bathroom stall for how long?
Put a regular ping sensor in the ceiling and get empty stall distance recorded. If someone is in the stall with a fuzzy hat or soft hair the sensor will read max range/timeout for no ping return. If they make a return, the distance will be shorter than the floor or seat it usually bounces off.
As I have got older, and I first worked with microprocessors in the late 70s, I realise that whilst I may think I have the odd clever idea that no-one has thought about before, I then appreciate that several zillions of other people have probably also had the same clever idea.
So when there is no apparent (low cost) solution to an 'Occupancy Sensor' just maybe its possible that there is no solution.
it is not so much the sensors, but more the requirements for operations.
a sleeping person will not move to set off a sensor
a TV or computer will generate a heat signature
in the large 50m x 50m space, how to you monitor all sections?
when the space has walls, or partitions, then the number of sensors and types of sensors has to increase to cover the large space and the small spaces.
OP talks about "sitting, sleeping, using the rest room". Three different things, and at least two different rooms. One small room (an ultrasound sensor should do the job just fine), one much bigger.
For the bigger room you will need a combination of sensors such as motion detectors, heat detectors and/or CO2 detectors. Known heat sources (such as TVs) could be filtered out by simply detecting whether they're switched on or not. CO2 detectors of course will react slow and are affected by windows - sensors on the large windows can tell that they're open so you know the CO2 doesn't work. A window opening or closing, or a TV being switched on or off, can be used as yet another way to tell that there's someone in the room.
To check whether a person is using a chair or a bed, a weight sensor should work quite well. Unless it's a very small person, a 10 kg minimum would take care of most stray objects placed on the chair/bed.
You're going to need an array of sensors, and that way I believe you will get pretty good reliability. There will always be ways to fool the sensors, but those will more and more be only deliberate actions and not normal behaviour.