Yes. The method now() Returns the current time as seconds since Jan 1 1970. Simply keep tract of all your time this way and you only need to test this one value.
The Arduino is not a good source of time over long periods. Consider using an RTC (Real Time Clock) chip. This Arduino page links to this page which talks about an RTC. (I will leave it up to you to research any compatibility issues.)
Many RTCs contain a register set specifically designed to handle tasks such as you outlined above. For example, setting alarms off on weekdays only or on specific days of the month.
If absolute time is not important in your application I would try the following code outline. Each test only has 2 operands:
// Turn on Arduino on Monday at the time task is to be performed. Task
// should be performed at that time on Monday, Tuesday, ... Friday.
// Nothing should happen on Saturday & Sunday. Then cycle repeats.
// Set time to zero.
// Count through days (0, 1, 2, ...).
// Wait each day until number-of-seconds is greater then seconds-in-a-day
// times the day number.
// If day number is 4 or less do activity. Else skip activity.
// If day number is more than 6 set the day counter to 0 and set the time
// to zero.
If you want to start the Arduino at arbitrary times, set the initial Arduino clock value to the number of seconds from the time the activity would have been performed on Monday and initialize the day counter to the appropriate value. For example if you started the Arduino on Tuesday 23 hours after the time the activity should have happened on Monday set the Arduino clock to 23 * 60 * 60 seconds and initialize the day counter to 2. Of course you can calculate the initial day counter value using = initial_number_of_seconds / 60 * 60 * 24.