Why can’t one calibrate a monitor with a DSLR & a color chart?

There’s some good detail in the other answers but I wanted to point out the challenges belied by your approach:

  1. Take a RAW photo of a real color chart outside to get a white point of D65.

How are you measuring the D65 light, to know that it’s actually D65? If you’ve got a spectrophotometer to measure the light, surely that can be used to calibrate the display. I suspect it would be easier to shoot indoors with D65-balanced lights (well, assuming you’ve measured the lights to know their color output and any correction necessary for them).

  1. Use that to get an accurate color correction matrix for the camera sensor.

If you’ve got the software to generate a color profile (exactly what a “color correction matrix” is), then you’ve probably also got a colorimeter or spectophotometer. So I will instead assume that you are thinking of simply adjusting curves to a set of numbers to make the DSLR image match the color chart.

It’s worth pointing out that a ColorChecker Classic chart (such as I’d guess you’re shooting) has 24 colors, whereas software meant to do this will instead make hundreds of color measurements. Your result will be significantly less accurate.

  1. Use the same camera to take a picture of the chart as displayed on the screen.

The first problem you’ll encounter here: how do you know what color temperature you’re working with? Sure, the monitor says “6500” or “D65,” but how have you measured this to verify it’s what it claims?

How are you setting and adjusting the brightness, contrast, and red, green, and blue values of the monitor to maximize what the monitor is actually capable of creating?

When we talk about calibrating a display, there are actually two parts to be done: calibration and profiling. Calibration is the process of setting the monitor to its best values to maximize what the display is capable of, and the colorimeter or spectrophotometer is doing the hard work here of analyzing the color coming off the screen and determining how to eek out just that little bit more, turning a good display into a great one, or even a mediocre display into a good one.

By simply “using the same camera to take a picture of the chart as displayed on the screen” you are completely bypassing this part of the process, which obviously means you’re going to get an inferior result.

The second part, profiling, is effectively mapping what the monitor is producing to what the ideal result is. Here, again, a colorimeter or spectrophotometer is going to take hundreds of measurements to determine exactly what the monitor is capable of producing. A comprehensive look at what the monitor can produce creates a profile with a far more comprehensive result.

  1. Find the color correction matrix of the monitor, and load it into an ICC profile

How are you reading your color correction data to build an ICC profile? It’s been years since I seriously worked with color management software, but I suspect it’s still true that you’ll need to spend some big bucks to manipulate and use external data to build a new profile. And though my experience with profile manipulation is minimal, what I found and what other experts recommend is that if the profile isn’t providing the results you expect it’s because the profile was created incorrectly; going through the process again is far more likely to yield success than trying to fix a bad profile.

In other words, to build a good profile you need a good calibration. To get a good calibration you need a spectrophotometer or colorimeter.