You'll need to create a couple of columns and the workflow rule to track the duration.
[Old Status] column of a Text type to store previous status value
[Last Status Change] column of a Timestamp type to store the moment the status has changed
A couple of Duration columns, one for each status value: say [Status 1 Old], [Status 2 Old] etc.
A couple of Formula - Duration columns, one for each status value with formulas like this:
If([Status] = "s1", [Status 1 Old] + (Now() - [Last Status Change]), [Status 1 Old])
These formulas will calculate the result you need.
A workflow rule should filter all records and triggered when the record is Added or Status column is changed.
The trigger should execute the Record Update Action with the following assignments:
Now() -> Last Status Change
Status -> Old Status
and a number of assignments one for each status value (we are using "s1", "s2" in the example below)
If([Old Status] = "s1", [Status 1 Old] + (Now() - [Last Status Change]), [Status 1 Old])
If([Old Status] = "s2", [Status 2 Old] + (Now() - [Last Status Change]), [Status 2 Old])
Any support materials, such as spreadsheets and real-life work samples would be very helpful as they would help us better understand your business process.