Does anyone have any good recommendations for code profiling? I would like to be able to view the system heap, memory usage, garbage collection statuses, etc...
For memory profiling I couldn't beat .NET Memory Profiler. Had everything I needed.
Just to add to all the relevant answers. If you want to inspect the runtime heaps, memory usage and so forth you can actually do all of this (and a lot more) using WinDbg and Sos.dll, which are free. It is not a profiler, but it is a very useful tool for examining the application at runtime.
CLR Profiler is very useful.
Brief Description
The CLR Profiler allows developers to see the allocation profile of their manage applications.
You can find more details about CLR Profiler in this MSDN article.
There's also a profiler included in some versions of Visual Studio. The one included in Visual Studio 2010 seems nice. I don't know if it's good at profiling memory usage though.
Since everyone's listing the available tools, I thought I'd point you to the complete list of profilers for .NET: http://sharptoolbox.com/categories/profilers-debuggers
You'll find there the tools suggested here and all the other ones, each with a short description of what it proposes.
If you are looking for bottlenecks, I think this is best. It finds them in no time, and you don't have to buy or install anything.