Programmatically detect if wp-cron is disabled?

First, I would check the constant ‘DISABLE_WP_CRON’. If that constant is true, I would already warn the user.

Then I would set a cron job with your plugin to update an option in the database. That option should be updated only by the cron job of your plugin.
Then you can check if that option is updated.
If that option was updated, then the cron system is working.
If it’s not updated, you can warn the user by asking to check if the cron is enabled.