aptitude considers packages that are installed due to dependencies to be "automatically" installed. With that knowledge, you can quickly construct an aptitude search pattern to list all installed packages that where not automatically installed:
aptitude search "?and(?installed, ?not(?automatic))"
Alternatively, using short form for the search terms:
aptitude search '~i !~M'
! is a special character in some shells. In the above, I used
'...' as quote chars to make Bash happy.)
Finally, packages which where installed by basic system installation will also be listed in the above. If that's a problem, you can exclude packages which the system considers to be essential by adding an
!~E filter. Or you could create a list of packages right after what you consider to be the basic installation, and diff against that afterwards.
(grepping through bash history is certainly also a quick and simple option, and will work well if you are mainly interested in uninstalling some recently-installed packages. However, due to the limited size of the bash history, you will have a tough time finding packages that where installed, say, a year ago.)