Можно создать таблицу с сессиями пользователей. И при логине записывать ид текущей сессии. Если он логинется с другого компа генерится новая сессия и перетирает старую. Соответсвенно если пользователя с такой ид сессии нету в базе значит он залогинелся в другом месте и тут его можно вылогинить.
Так же и с активностью. При каждом действии записывать текущее время (last activity time).
Ну и на странице, каждые 30 секунд делать запрос на сервер и проверять текущуюю сессию и активность пользователя.